Я пытаюсь запустить следующую команду на удаленном компьютере для удаления предыдущей версии продукта до установки другой версии. Это удаление с помощью MsiExec.exe.PSRemotingTransportException при вызове Start-Process «MsiExec.exe» на удаленном компьютере
Всякий раз, когда я вызываю Start-Process, процесс фактически запускается, и продукт удаляется на удаленном компьютере, но я получаю приведенное ниже исключение. Если продукт еще не установлен, а строка Start-Process не запускается, удаленная команда работает отлично, без исключения. (т. е. он фактически ищет реестр, не находит продукт и возвращает -1 без исключения). Проблема возникает только при вызове Start-Process.
Вот мой код сценария ...
$UninstallScriptBlock = {
param ([string]$InstallerProductName)
$ErrorActionPreference = "Stop";
$UninstallRegPath = "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
$ProductCode = Get-ChildItem -Path $UninstallRegPath | foreach { if ($_.GetValue("DisplayName") -eq $InstallerProductName) { [System.IO.Path]::GetFileName($_); } }
if ([string]::IsNullOrEmpty($ProductCode))
{
$UninstallRegPath = "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall";
$ProductCode = Get-ChildItem -Path $UninstallRegPath | foreach { if ($_.GetValue("DisplayName") -eq $InstallerProductName) { [System.IO.Path]::GetFileName($_); } }
}
if ([string]::IsNullOrEmpty($ProductCode))
{
return -1;
}
$Process = Start-Process -Wait -Passthru -FilePath "MsiExec.exe" -ArgumentList "/X", $ProductCode, "/qn";
return $Process.ExitCode;
}
[int]$UninstallReturnCode = Invoke-Command -ComputerName $Server -ScriptBlock $UninstallScriptBlock -ArgumentList $InstallerProductName -SessionOption (New-PSSessionOption -OperationTimeout 0);
И брошено исключение ...
Processing data for a remote command failed with the following error message: The I/O operation has been aborted because of either a thread exit or an application request. For more information, see the about_Remote_Troubleshooting Help topic.
At [Undisclosed]
+ [int]$UninstallReturnCode = Invoke-Command -ComputerName $Server -ScriptBloc ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: ([UndisclosedServerName]:String) [], PSRemotingTransportException
+ FullyQualifiedErrorId : JobFailure
+ PSComputerName : [UndisclosedServerName]
И отформатирован ошибка ...
ErrorCode : 995
TransportMessage : The I/O operation has been aborted because of either a thread exit or an application request.
ErrorRecord : Processing data for a remote command failed with the following error message: The I/O
operation has been aborted because of either a thread exit or an application request. For
more information, see the about_Remote_Troubleshooting Help topic.
StackTrace :
WasThrownFromThrowStatement : False
Message : Processing data for a remote command failed with the following error message: The I/O
operation has been aborted because of either a thread exit or an application request. For
more information, see the about_Remote_Troubleshooting Help topic.
Data : {}
InnerException :
TargetSite :
HelpLink :
Source :
Что вы получите, если вы выполните: «$ Ошибка [0]. Исключение | Формат-список * -Force» после исключения? –
Добавлена форматированная ошибка для публикации. – TylerOhlsen
Я думаю, что я обнаружил проблему. Я думаю, что мой установщик перезагружает IIS и, следовательно, отключает мое соединение с PowerShell Remoting. Означает ли это, что это возможно? – TylerOhlsen