Есть ли способ заставить удаленные функции 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 и из нее.