Como posso listar compartilhamentos administrativos ocultos usando o PowerShell?

5

Estou tentando escrever um script que auditará pastas compartilhadas em alguns servidores confidenciais da HIPAA. Estou recebendo uma lista de compartilhamentos muito bem usando gwmi Win32_Share , no entanto, quando vou obter as permissões em cada compartilhamento usando gwmi Win32_LogicalShareSecuritySetting , os compartilhamentos administrativos ocultos não são listados.

Eu percebo que por razões óbvias, não é como se as permissões mudassem, mas eu gostaria de algum tipo de indicação de que isso é de fato um compartilhamento administrativo. Atualmente estou usando um bloco try-catch para lidar com o erro e retroceder uma mensagem de 'permissões não encontradas'.

Existe alguma maneira de listar APENAS compartilhamentos administrativos ocultos usando o PowerShell?

    
por Tanner Faulkner 04.10.2013 / 21:51

1 resposta

4

Tente (alterar "." para o nome do seu computador remoto):

[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
    
por 04.10.2013 / 22:28