我只想知道服务器上的所有共享,或者更好的是域中的所有共享。我希望可以通过 powershell 脚本来实现。
答案1
如果您想要清点域中所有计算机的共享,您可以使用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
答案2
使用 PowerShell,您可以使用Get-SMBShare
。
如果您的操作系统版本与此 cmdlet 不兼容,则可以使用旧的net share
反而。
至于如何在每台服务器上运行它,你可以使用Invoke-Command
在 PowerShell 中,或psexec
从命令提示符中的 Sysinternals 中。