我正在尝试通过 Powershell 远程和 Invoke 命令将 Exchange Cu 14 从服务器 A 安装到服务器 B。
当以相同的登录用户身份在服务器 B 上本地运行时,安装成功完成...但不能从另一台服务器使用 Invoke 命令进行远程运行。
在服务器 A 上运行(简化版本且 $SetupPath 和 $Params 正确):
$ScriptBlock_ExchangeInstallation = {
Start-Process $SetupPath -ArgumentList $Params -NoNewWindow
}
$SessionOptions = New-PSSessionOption -MaxConnectionRetryCount 50 -IdleTimeout 86400000 -OperationTimeout 21600000
$SecPw= ConvertTo-SecureString "PwSuperSecure!" -AsPlainText -Force
$Creds = New-Object System.Management.Automation.PSCredential ("MrMarshall\Andreas.marshall", $SecPw)
Invoke-Command -ComputerName "ServerB" -SessionOption $SessionOptions -ScriptBlock $ScriptBlock_ExchangeInstallation -ErrorAction Stop -Authentication Kerberos -Credential $Creds
在失败的 Exchange 日志中。我可以看到以下错误:
[11/12/2019 21:34:18.0728] [0] [错误] 上的 Active Directory 操作失败。 提供的“MRMARSHALL\andreas.marshall”凭据无效。 [11/12/2019 21:34:18.0728] [0] [错误] 提供的凭据无效。
我觉得安装过程中凭据未正确传递给 DC。有什么想法可以让我以其他方式开始安装吗?
更多例外。
Microsoft.Exchange.Configuration.MonadDataProvider.MonadDataAdapterInvocationException: Active Directory 操作在 上失败。 为“MRMARSHALL\andreas.marshall”提供的凭据无效。 它正在运行命令“Get-OrganizationConfig”。 ---> Microsoft.Exchange.Data.Directory.ADInvalidCredentialException: Active Directory 操作在 上失败。 为“MRMARSHALL\andreas.marshall”提供的凭据无效。 ---> System.DirectoryServices.Protocols.LdapException: 提供的凭据无效。
答案1
读了一些资料后,我发现这是一个双跳问题,就像 @Semicolon 所评论的那样。现在我无法为此配置 kerberos,因此我换了一种方式,即在本地安排任务并启动它来为我运行该作业。
虽然不太漂亮,但是现在还可以用!
我正在调用下面的代码在远程服务器上本地启动该进程。
$Action = New-ScheduledTaskAction -Execute $SetupPathUNC -Argument $MediaParametersExchangeCU14
$Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -WakeToRun
Register-ScheduledTask -Action $Action -User "MrMarshall\andreas.marshall" -Password "Bytidag123!" -TaskName "Start_ExchangeInstallation" -RunLevel Highest -Settings $Settings -Force
Start-ScheduledTask -TaskName "Start_ExchangeInstallation" -ErrorAction Stop | Out-Null
while ((Get-ScheduledTask -TaskName 'Start_ExchangeInstallation').State -ne 'Ready') {
Write-Output "$(Get-Date) Waiting on scheduled task..." | Tee-Object "$LogPath/_MainLog.txt" -Append
Start-Sleep 60
}