2016-10-13 9 views
0

でPowerShellのコマンドの実行時に、私はC#の設定Paramerters C#

Invoke-Command -Session $session -ScriptBlock { 
    Get-MailboxPermission -Identity ${identity} -User ${user} 
} 

で次のPowerShellコマンドを実行しようとしている私は、次のC#コードを試みたが、識別情報とユーザーのパラメータを設定できませんでした。

var command = new PSCommand(); 
command.AddCommand("Invoke-Command"); 
command.AddParameter("ScriptBlock", ScriptBlock.Create("Get-MailboxPermission -Identity ${identity} -User ${user}")); 
command.AddParameter("identity", mailbox); 
command.AddParameter("user", user); 

ScriptBlockの作成時に値をハードコードするとうまくいきます。どのようにパラメタを動的に設定できますか?

これを行うには、次のように値を連結するよりよい方法がありますか?

command.AddParameter("ScriptBlock", ScriptBlock.Create("Get-MailboxPermission -Identity " + mailbox + " -User " + user)); 
+1

'command.AddParameter( "のScriptBlock"、ScriptBlock.Create(" PARAM($ { $ {user})Get-MailboxPermission -Identity $ {identity} -User $ {user} ")); command.AddParameter( "ArgumentList"、新しいオブジェクト[] {メールボックス、ユーザー}); ' – PetSerAl

+0

ありがとう@PetSerAlまさに私が探していたものです。なぜこれを回答として投稿しないのですか?誰が同じ解決策を探しているのかを助けるかもしれない。 – Yasitha

+0

私は今、タブレットにいます。これは、IMHOです。タイピングにはあまり面白くありません。私は家に帰ったとき、むしろ答えを出すだろう。 – PetSerAl

答えて

2

あなたのC#コードの問題は、あなたがInvoke-Commandためのパラメータとしてidentityuserを渡すことです。それは多かれ少なかれ同等以下のPowerShellのコードに:

Invoke-Command -ScriptBlock { 
    Get-MailboxPermission -Identity ${identity} -User ${user} 
} -identity $mailbox -user $user 

そしてInvoke-Commandidentityuserパラメータを持っていないので、あなたがそれを実行したとき、それは、失敗します。リモートセッションに値を渡すには、パラメータを-ArgumentListに渡す必要があります。渡された値を使用するには、ScriptBlockparamブロックに宣言するか、$args自動変数を使用できます。それはこのようになります

Invoke-Command -ScriptBlock { 
    param(${identity}, ${user}) 
    Get-MailboxPermission -Identity ${identity} -User ${user} 
} -ArgumentList $mailbox, $user 

C#の場合::だから、実際には、次のPowerShellのコードと同等のものを必要とする

var command = new PSCommand(); 
command.AddCommand("Invoke-Command"); 
command.AddParameter("ScriptBlock", ScriptBlock.Create(@" 
    param(${identity}, ${user}) 
    Get-MailboxPermission -Identity ${identity} -User ${user} 
")); 
command.AddParameter("ArgumentList", new object[]{mailbox, user});