Есть ли способ заставить удаленные функции PowerShell 2 работать между компьютерами с Windows XP?

PowerShell 2.0 имеет некоторые супер-эффектные функции удаленного взаимодействия. Однако мне неясно, можно ли их настроить для работы с компьютерами под управлением Windows XP или между ними, или вам нужна Windows Vista или Windows 7.

Вот что у меня есть:

  • Пара машин с Windows XP MCE с установленным пакетом обновления 3 (SP3) и .NET 3.5.

  • PowerShell 2.0 CTP3 установлен на обоих.

  • WS-Management v1.1 установлен на обоих (как 2.0, кажется, не работает на Windows XP?)

Со всем этим на месте "Enable-PSRemoting" все еще выводит меня из строя эту ошибку:

Enable-PSSessionConfiguration: функции удаленного взаимодействия Windows PowerShell не включены или не поддерживаются на этом компьютере. Это может быть связано с тем, что у вас не установлена ​​правильная версия WS-Management, или эта версия Windows в настоящее время не поддерживает удаленное взаимодействие.

Обычно мой ответ на этом этапе будет звучать так: "Ну, я думаю, пришло время загрузить Windows 7 RC", но я видел достаточно смутных комментариев о людях, которые подключаются к Windows XP и выходят из нее, чтобы заставить меня думать, что это возможно.,

Как я могу заставить это работать?

5 ответов

Решение

В настоящее время вы не можете использовать функцию удаленного взаимодействия PowerShell в Windows XP, поскольку она зависит от WinRM 2.0 CTP3, который для нее недоступен. Поддержка удаленного взаимодействия в Windows XP будет доступна после окончательной сборки PowerShell V2 (и WinRM 2.0).

Я знаю, что это не совсем то, что вы ищете, но возможная альтернатива, которая почти наверняка будет работать на XP или Vista, - это запуск скрипта Powershell удаленно с помощью:

psexec - Microsoft (сделано Марком Руссиновичем, достаточно сказано!)
rctrlx (мой инструмент) - более мощный, чем psexec в определенных ситуациях
Remcom - с открытым исходным кодом

Таким образом, вам не нужно ничего устанавливать на любой машине, кроме Powershell

Вы можете обмануть, используя некоторые хитрости с WinRS, чтобы заставить его работать с V1.

function Invoke-RemoteCommand 
{ 
param( 
$ComputerName, 
[SCRIPTBLOCK]$script 
) 
    $encodedScript = [System.Convert]::ToBase64String([System.Text.Encoding]::UNICODE.GetBytes($script)) 
    $objects = Winrs "-r:$ComputerName" PowerShell -OutputFormat XML -NoProfile -NonInteractive -EncodedCommand $encodedScript 
    Write-Output $objects 
}

Invoke-RemoteCommand localhost {gps} |where {$_.handles -ge 500} |sort handles

-EncodedScript - это недокументированный ключ для PowerShell.exe в V1. Он просто говорит PowerShell принять в качестве команды строку в кодировке base64. Это делает жизнь немного проще для разбора и т. Д., Если ваш скрипт-блок становится длинным и безобразным.

Я не смог заставить PowerShell работать между Vista и XP или XP и XP. Похоже, что на данный момент это программа типа Vista и выше.

Я потратил 10 или 15 часов на это... так что, может быть, кому-то другому это удалось... но я не смог достичь нужного в этом.

Он еще не был официально выпущен, но теперь вы можете получить Powershell V2 и WinRM V2 для Server 2003 и Windows XP Release через сайт Microsoft Connect. Это должно позволить вам использовать функции удаленного взаимодействия PowerShell для Windows XP и из нее.

Другие вопросы по тегам