美好的一天!
有人知道如何处理 DC 超时错误吗?运行此行时我间歇性地收到错误:
$HostnameCatch = Get-ADComputer -credential $credential -Filter $filter -Properties Name -ErrorAction Continue
由于某种原因,即使我特别注明了 -ErrorAction to continue,脚本在遇到 DC 超时时仍然会中断。
这是我们收到的错误消息:
消息:由于超出超时限制,操作返回。
InnerException : System.TimeoutException: This request operation sent to DC name did not receive a reply within the configured timeout (00:02:00). The time allotted to this operation may have been a portion of a longer timeout. This may be because the service is still processing the operation or because the service was unable to send a reply message. Please consider increasing the operation timeout (by casting the channel/proxy to IContextChannel and setting the OperationTimeout property) and ensure that the service is able to connect to the client.
这是我们正在使用的代码片段:
$RCcount = 0
$maxRetries = 3
while ($RCcount -lt $maxRetries) {
$HostnameCatch = Get-ADComputer -credential $credential -Filter $filter -Properties Name -ErrorAction SilentlyContinue
if($?)
{Write-host -Message "Hostname catch returned with no error, Domain Controller [$($LogonServer)] is responding as expected"
break}
else {
$RCcount++
Write-host -Message "Domain Controller [$($LogonServer)] is not responding as expected to capture Hostname with possible SPN Duplicate. Retry Count $RCcount"
start-sleep 200}
}
我基本上是要求脚本在转到另一个 if 语句之前至少尝试这些命令 3 次,如果 $maxretries -eq $rccount,请最后一次尝试。捕获错误。
为什么 DC 超时会有效地停止脚本,而不管错误操作如何?有办法绕过这个吗?
-更新错误已确认是由我们的 DC 生成的,如果我们在脚本使用的 DC 上运行相同/相似的命令,有时也会给我们带来超时错误。我们的 DC 最近发生了变化 - 作为操作系统升级项目的一部分,他们一直在升级/降级域控制器。
我正在修改此代码以尝试捕获此问题并重试 - 根据我们的经验,如果 DC 超时,尝试两次通常会让我们通过。
正如 @AbrahamZinala 提到的,AD 模块不尊重错误操作首选项。 @SantiagoSquarzon 进一步解释了这一点,引导我们找到 AD 模块的反码。
谢谢大家的帮助!