Powershellスクリプトの初心者ですが、ユーザー管理Powershellスクリプトで作業していますが、私は奇妙なエラーに遭遇しました。Import-PSSessionはスクリプトで失敗し、シェルで動作します
次のコードで、私はシェルからそれを実行したときに動作しますが、ではないそれは、スクリプトから実行されたとき:
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionURI http://servername/Powershell/ -Authentication Kerberos -Credential $UserCredential -AllowRedirection
Import-PSSession $Session
私は最初の行にParam()
ブロックとスクリプトでそれを実行すると、次のエラーで失敗します。
Import-PSSession: Cannot bind argument to parameter 'Path' becuase it is an empty string.
私はParam()
ブロックを削除する場合、私はImport-PSSession
が仕事を得ることができますが、私はそう私のスクリプトのコマンドライン引数を受け入れるかどうかはわかりません。 Param()
ブロックを維持する(またはより一般的には、コマンドライン引数を受け入れる)ことができますが、引き続きPSセッションをインポートすることはできますか?
2010年のExchangeサーバーに接続しようとしているWindows 2008 R2サーバーでPowershell v2を使用しています。
更新:
私は、スクリプトは次のように
.\ManageUser.ps1 -disableUser -username someuser
のようなプロンプト私はPowerShellのから実行ManageUser.ps1
という名前のスクリプトを開始しています
Param(
[switch]$disableUser,
[string]$username
)
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionURI http://servername/Powershell/ -Authentication Kerberos -Credential $UserCredential -AllowRedirection
Import-PSSession $Session
#more stuff past here...
それは上の障害が発生していますImport-PSSession
コマンドしかし、Param(...)
全体を削除すると、セッションのインポートが機能します。私はこれがあなたがそれを理解するのに十分であることを願っています!
あなたは人々があなたのコードを表示せずに、あなたのコードのトラブルシューティングをしたいですか?どのように 'param()'ブロックを書いていますか?あなたはどのようにスクリプトを呼び出していますか? – TessellatingHeckler
@TessellatingHeckler申し訳ありませんが、私は十分な情報を与えたと思いました。私は今質問を更新しました。ご存知の方がいらっしゃいましたら教えてください!ありがとう。 – Logan
Import-PSSessionに-AllowClobberオプションを追加しようとしたのですか?おそらくPowershellのバックグラウンドでデフォルトのパラメータ設定が行われているのでしょうか? – SamuelWarren