3

PowerShellを使用してWebサーバー上にWebサイトをリモートでセットアップしようとしています。構成しようとしているWebサーバーは、デフォルトでPowerShellv2がインストールされているWindowsServer 2008R2SP1です。

簡単にするために、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

「WindowsPowerShellバージョン2にスナップインが登録されていません」という恐ろしいエラーが発生します。

論理的には、次のコマンドを実行してPowerShellのバージョンを確認します。

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

Webサーバーにリモートでログインして、Powershellコマンドを正常に実行できます。

何か案は?

4

1 に答える 1

2

そのバージョン番号は、リモート処理で使用されるホスト実装のバージョン番号です。例:

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


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

PowerShell Remotingが導入されたのは、少なくともPowerShell2.0エンジンを使用している必要があります。64ビットPowerShellリモーティングエンドポイントを呼び出していて、64ビットPowerShellに登録されていないか、64ビットPowerShellで実行されない(またはその逆の)スナップインがある可能性が高くなります。

32ビットのリモーティングエンドポイントを呼び出す必要がある場合は、次のことを試してください。

C:\PS> Invoke-Command . {[intptr]::size} -ConfigurationName Microsoft.PowerShell32
4
于 2012-10-24T01:37:35.027 に答える