web-dev-qa-db-ja.com

PowerShellスクリプトを使用してサーバー上のすべての共有を検索できますか?

サーバー上のすべての共有、またはドメイン内のすべての共有を知りたいだけです。私はそれがPowerShellスクリプトを通じて可能になることを望んでいました。

1
user3821261

ドメイン内のすべてのコンピューターから共有をインベントリする場合は、Get-WmiObjectを使用して、各コンピューターのWin32_Sharewmiクラスにクエリを実行できます。

# Import the AD module to the session
Import-Module ActiveDirectory 
# Retrieve the dNSHostName attribute from all computer accounts in AD
$ComputerNames = Get-ADComputer -Filter * -Properties dNSHostName |Select-Object -ExpandProperty dNSHostName

$AllComputerShares = @()

foreach($Computer in $ComputerNames)
{
    try{
        $Shares = Get-WmiObject -ComputerName $Computer -Class Win32_Share -ErrorAction Stop
        $AllComputerShares += $Shares
    }
    catch{
        Write-Error "Failed to connect retrieve Shares from $Computer"
    }
}

# Select the computername and the name, path and comment of the share and Export
$AllComputerShares |Select-Object -Property PSComputerName,Name,Path,Description |Export-Csv -Path C:\Where\Ever\You\Like.csv -NoTypeInformation
3

PowerShellを使用すると、 Get-SMBShare

このコマンドレットと互換性のないOSバージョンがある場合は、古き良き net share 代わりに。

各サーバーでの実行方法については、 Invoke-Command PowerShellの場合、または psexec コマンドプロンプトのSysinternalsから。

2
MDMarra