web-dev-qa-db-ja.com

PowerShellを使用して非表示の管理共有を一覧表示するにはどうすればよいですか?

いくつかのHIPAAに敏感なサーバー上の共有フォルダーを監査するスクリプトを作成しようとしています。 gwmi Win32_Shareを使用して共有のリストを正常に取得していますが、gwmi Win32_LogicalShareSecuritySettingを使用して各共有のアクセス許可を取得しようとすると、非表示の管理共有がリストされません。

これは明らかな理由であり、権限の変更ではないことを認識していますが、これが実際には管理共有であることを示す何らかの兆候があります。現在、try-catchブロックを使用してエラーを処理し、「権限が見つかりませんでした」というメッセージを表示しています。

PowerShellを使用して非表示の管理共有のみを一覧表示する方法はありますか?

5
Tanner Faulkner

試してください(「。」をリモートコンピュータ名に変更してください):

[String]                                   $Local:strComputerName  = ".";
[System.Management.ManagementBaseObject[]] $Local:arrShares        = @();
[System.Management.ManagementBaseObject]   $Local:objShare         = $null;

$arrShares = Get-WMIObject -class "Win32_Share" -namespace "root\CIMV2" -computername $strComputerName -ErrorAction SilentlyContinue | Where-Object { $_.Type -eq 2147483648 };
if ( $? ) {
    foreach ( $objShare in $arrShares ) {
        # List attributes (other attributes include AccessMask, AllowMaximum, Description,
        # InstallDate, MaximumAllowed, Status and Type).
        Write-Host -Object ( "Name        : {0}" -f $objShare.Name );
        Write-Host -Object ( "Path        : {0}" -f $objShare.Path );
        Write-Host -Object ( "Caption     : {0}" -f $objShare.Caption );
        Write-Host -Object "";
        } #foreach
} else {
    Write-Host -Object "ERROR.";
} #else-if
4
Simon Catlin