问题描述
以下脚本将成功完成,但故障转移后,新的 DestinationComputer 数据卷仍处于挂载状态且复制状态为“WaitingForDestination”
$cred = Get-Credential domain\adminaccount
$s = New-PSSession -computerName DestinationSrv01 -credential $cred
Invoke-Command -Session $s -Scriptblock {Set-SRPartnership -NewSourceComputerName DestinationSrv01 -SourceRGName rg02 -DestinationComputerName SourceSrv01 -DestinationRGName rg01 -confirm:$false}
Remove-PSSession $s
SourceSrv01:
DataVolume IsMounted ReplicationMode ReplicationStatus
---------- --------- --------------- -----------------
D:\ Synchronous WaitingForDestination
我用Enter-PSSession
测试了同样的命令,结果和上面一样。
如果我 RDP 到 DestinationSrv01 并打开 PowerShell 控制台运行以下命令,则一切正常。
Set-SRPartnership -NewSourceComputerName DestinationSrv01 -SourceRGName rg02 -DestinationComputerName SourceSrv01 -DestinationRGName rg01 -confirm:$false
SourceSrv01:
DataVolume IsMounted ReplicationMode ReplicationStatus
---------- --------- --------------- -----------------
D:\ False Synchronous ContinuouslyReplicating
解决方法
我在这里盲目导航,但根据当前评论和时间问题的怀疑尝试调整 Start-Sleep
的位置:
$cred = Get-Credential domain\adminaccount
$s = New-PSSession -computerName DestinationSrv01 -credential $cred
$ScriptBlock = {
$SRPartnerShip = Set-SRPartnership -NewSourceComputerName DestinationSrv01 -SourceRGName rg02 -DestinationComputerName SourceSrv01 -DestinationRGName rg01 -confirm:$false
Start-Sleep -Seconds 30
$SRPartnerShip = $SRPartnerShip | Get-SRPartnership
}
Invoke-Command -Session $s -Scriptblock $ScriptBlock
Remove-PSSession $s
这在刷新然后返回之前等待 30 秒。你的方式是你在返回后等待 30 秒。如果通过简单的重新获取刷新没有修复它,除了等待更长时间返回错误信息之外,它不会改变任何东西。