带有调用命令的 PowerShell 脚本卡在特定计算机上
PowerShell-script with invoke-command gets stuck on specific computers
我正在编写一个 PowerShell 脚本,它从所有 AD 服务器读取所有共享并将它们输出到一个 csv 文件中。同时,脚本会保存所有发生的错误并将它们输出到错误日志中。该脚本将 运行 作为每周任务。
当我 运行 脚本时,一切顺利,直到它到达一个特定的服务器,它才会无限加载。 AD 服务器 (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
好的,我现在找到问题了。两台服务器冻结并导致永无止境的 PowerShell 脚本。现在我想我将配置某种超时,你们中有人知道我如何以最好的方式做到这一点吗?
谢谢大家的帮助。
我正在编写一个 PowerShell 脚本,它从所有 AD 服务器读取所有共享并将它们输出到一个 csv 文件中。同时,脚本会保存所有发生的错误并将它们输出到错误日志中。该脚本将 运行 作为每周任务。 当我 运行 脚本时,一切顺利,直到它到达一个特定的服务器,它才会无限加载。 AD 服务器 (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
好的,我现在找到问题了。两台服务器冻结并导致永无止境的 PowerShell 脚本。现在我想我将配置某种超时,你们中有人知道我如何以最好的方式做到这一点吗? 谢谢大家的帮助。