サーバー上のすべての共有、またはドメイン内のすべての共有を知りたいだけです。私はそれがPowerShellスクリプトを通じて可能になることを望んでいました。
ドメイン内のすべてのコンピューターから共有をインベントリする場合は、Get-WmiObject
を使用して、各コンピューターのWin32_Share
wmiクラスにクエリを実行できます。
# 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
PowerShellを使用すると、 Get-SMBShare
。
このコマンドレットと互換性のないOSバージョンがある場合は、古き良き net share
代わりに。
各サーバーでの実行方法については、 Invoke-Command
PowerShellの場合、または psexec
コマンドプロンプトのSysinternalsから。