by manamana
17. 3月 2013 14:30
SharePoint 2010 には多数の専用コマンドレットが用意されています。
これらをインストールしたサーバー上で使う時には問題が出ませんが、外部のPCからリモートで、
つまり WinRM 経由で呼び出すと何かと不具合が出ます。
先日作った、Get-SPDocumentPage.ps1 というスクリプトファイルがあります。
これを普通に起動すると…
普通に動きますww しかし、Invoke-Command -ComputerName xx で呼び出すと…
なにやら不穏なエラーが返ります。 しかもこのエラー、時々内容が変わります。
いろいろ調べてみたところ、PowerShell をリモート経由で呼び出す場合、SharePoint 用のコマンドレットのような大規模なものは
メモリー不足に陥りやすい事が判明しました。 回避するには WSMan プロバイダーの設定を変更してやる必要があります。
WSman:\localhost\shell に移動して、 MaxMemoryPerShellMB の値を大きくしてやります。
初期値が 150 なので 1024 にしてみました。
これで余裕が生まれ、リモートコマンドが成功します。
Invoke-Command でリモート実行すると、自動的に PSComputerName, RunspaceId というプロパティが追加されます。
便利な様で意外に邪魔だったりします。
Invoke-Command 時に -Credential オプションを指定せず、実行ユーザーの認証情報を使いたい場合には
Credential Security Provider の設定をする必要があります。
クライアントPCで
> Enable-WSManCredSSP -role client -DelegateComputer sp2010 (※sp2010 はサーバー名)
サーバーで
> Enable-WSManCredSSP -role server
としてやればOKですが、セキュリティレベルの低下に繋がるので要注意です。
これで Excel PowerShell Tool から SharePoint 2010 を管理する準備が出来ました。
2c546cf0-4093-404c-8fc7-b53c5241ecc5|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04
Tags:
PowerShell