2012-10-24 8 views
3

Я пытаюсь удаленно настроить веб-сайты на веб-серверах с помощью powershell. Веб-серверы, которые я пытаюсь настроить, - это Windows Server 2008 R2 SP1, который по умолчанию имеет powershell v2.Как вызвать версию Powershell версии 2 на удаленном компьютере с помощью Invoke-Command

Чтобы упростить работу, я использую Snapin "WebAdministration".

Всякий раз, когда я пытаюсь вызвать следующую команду:

PS C:\p4\eacp4wireframe\ReleaseEngineering\DL_Powershell\Infrastructure\PowerShell\IIS>  Invoke-Command -ComputerName web4 -Credential $admin -ScriptBlock {add-pssnapin  WebAdministration; Get-Website} 
No snap-ins have been registered for Windows PowerShell version 2. 
+ CategoryInfo   : InvalidArgument: (WebAdministration:String) [Add-PSSnapin], PSArgumentException 
+ FullyQualifiedErrorId : AddPSSnapInRead,Microsoft.PowerShell.Commands.AddPSSnapinCommand 

я получаю страшные «Нет оснастки были зарегистрированы для Windows PowerShell версии 2» ошибки.

Логически, я проверить версию PowerShell, выполнив команду:

PS C:\ Invoke-Command -ComputerName web4 -Credential $admin -ScriptBlock {(Get-Host).version} 
Major Minor Build Revision PSComputerName                                         
----- ----- ----- -------- --------------                                         
1  0  0  0  web4  

можно удаленно зайти на веб-сервер и запустить Powershell команды отлично.

Любые идеи?

ответ

2

Это номер версии номер версии реализации хоста используется ремоутинга .: например

C:\PS> Invoke-Command . {Get-Host | Get-Member} 


    TypeName: System.Management.Automation.Internal.Host.InternalHost 

Вы должны использовать по крайней мере, двигатель PowerShell 2.0, потому что, когда PowerShell Remoting был введен. Скорее всего, вы вызываете 64-битную удаленную конечную точку PowerShell, и у вас есть snapins, которые либо не были зарегистрированы для 64-битной PowerShell, либо не будут работать в 64-разрядной PowerShell (или наоборот).

Если вам нужно для вызова 32-бит удаленного доступа конечной точки попробовать это:

C:\PS> Invoke-Command . {[intptr]::size} -ConfigurationName Microsoft.PowerShell32 
4