0

我正在编写一个 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
4

1 回答 1

0

好吧,我现在发现了问题。两台服务器被冻结,导致 PowerShell 脚本永无止境。现在我想我会配置某种超时,你们中的任何人都知道我怎样才能做到最好吗?谢谢大家的帮助。

于 2022-03-03T12:28:59.663 回答