在 Powershell 上处理 DC 超时错误(由于超出超时限制,操作返回。)

问题描述 投票:0回答:1

美好的一天!

有人知道如何处理 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 超时,尝试两次通常会让我们通过。

powershell error-handling active-directory timeout
1个回答
0
投票

正如 @AbrahamZinala 提到的,AD 模块不尊重错误操作首选项。 @SantiagoSquarzon 进一步解释了这一点,引导我们找到 AD 模块的反码。

谢谢大家的帮助!

© www.soinside.com 2019 - 2024. All rights reserved.