PowerShell 2.0 имеет несколько супер-шикарных функций удаленного взаимодействия. Однако мне неясно, можно ли заставить их работать с / между машинами Windows XP, или вам нужна Windows Vista или Windows 7.
Вот что у меня есть:
Пара машин Windows XP MCE с установленным SP3, а также .СЕТЬ 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 и выходят из нее, чтобы заставить меня думать, что это возможно. .
Как я могу заставить это работать?
Прямо сейчас вы не можете использовать функцию удаленного взаимодействия 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 и обратно.