我正在编写一个 PowerShell 脚本,它从所有 AD 服务器读取所有共享并将它们输出到 csv 文件中。同时,脚本保存所有发生的错误并将它们输出到错误日志中。该脚本将作为每周任务运行。当我运行脚本时,一切都很顺利,直到它到达一个它无限加载的特定服务器。AD-Server (Windows Server_2012_R2) 位于一个普通的 OU 中,该 OU 中的其他服务器工作正常。
我相信还有其他一些问题也会出现,但我不确定到底有多少(大约 150 分之一)。
它不会产生错误。
你知道这里可能是什么问题吗?
代码:
$ErrorActionPreference = 'Continue'
$computers = (Get-Content C:\PowerShell\Shares\serverlist.txt).ForEach({
if(-not [string]::IsNullOrWhiteSpace($_))
{
"$_.domain.com"
}
})
$remoteCode = {
Get-SmbShare | Where-Object Path | Get-Acl |
Select-Object -Property "PSChildName", "Path", "Group", "AccessToString"
}
$results = Invoke-Command -ComputerName $computers -ScriptBlock $remoteCode 2>&1
$errors, $good = $results.Where({$_ -is [System.Management.Automation.ErrorRecord]}, 'Split')
$good | Sort-Object PSComputerName | Select-Object "PSComputerName", "PSChildName", "Path", "Group", @{ Name = "AccessToString"; Expression = { $_.AccessToString -replace("268435456", "FullControl") -replace("-1610612736", "ReadAndExecute")}} | export-csv -path C:\PowerShell\Shares\shares.csv -NoTypeInformation -delimiter ";"
$errors.Exception.Message | Set-Content $error_logfile -Encoding Unicode