我有大量的命令,寧願不改變它們全部。所以我想將命令對象變成代碼塊對象,並將它們的參數添加到調用中,以便稍後在另一臺計算機上執行它們。將命令插入到c中的調用命令中#
最終的結果是下面的代碼: 串服務器= cpu1.com
public void ExecuteRemote(Command basis) {
RunspaceInvoke invoke = new RunspaceInvoke();
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
Pipeline pipeLine = runspace.CreatePipeline();
ScriptBlock s=basis.CommandText);//<<<<this does not work, how can I fix this?
Command invokeScript = new Command("Invoke-Command");
invokeScript.Parameters.Add("ComputerName", server);
invokeScript.Parameters.Add("scriptBlock", s);
invokeScript.Parameters.Join(basis.Parameters); // and this does not work either?
pipeLine.Commands.Add(invokeScript);
Collection<PSObject> commandResults = pipeLine.Invoke();
}
所以有人知道如何做到這一點?
我標記的兩行不起作用(不編譯),我想知道如何修復它們。
ScriptBlock s=basis.CommandText);//<<<<this does not work, how can I fix this?
應加載從基礎的命令插入到腳本塊,因此它可以以後用於執行所述代碼和
invokeScript.Parameters.Join(basis.Parameters); // and this does not work either?
是從基礎移動參數插入invokescript的嘗試。
我已經根據我的答案上Invoke remote powershell command from C#但我不能改變每個函數的參數(還有很多命令的工作波谷)我想只取指令並執行。後看着@Keith山的回答
Console.WriteLine( 「創造援引」)
編輯; RunspaceInvoke invoke = new RunspaceInvoke();
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
Console.WriteLine("creating pipeline");
Pipeline pipeLine = runspace.CreatePipeline();
Console.WriteLine("creating scriptblock");
ScriptBlock s = ScriptBlock.Create(basis.CommandText);
Command invokeScript = new Command("Invoke-Command");
Console.WriteLine("adding parameter1");
invokeScript.Parameters.Add("ComputerName", "test1.com");
invokeScript.Parameters.Add("scriptBlock", s);
foreach (var p in basis.Parameters) {
invokeScript.Parameters.Add(p.Name, p.Value);
}
pipeLine.Commands.Add(invokeScript); Console.WriteLine("res");
Collection<PSObject> commandResults = pipeLine.Invoke();
我得到的錯誤,沒有參數可以通過名稱時要求添加followign命令「名稱」中找到: 命令MaakActiveDirectoryOU =新命令(「新ADOrganizationalUnit」);
MaakActiveDirectoryOU.Parameters.Add("Name", KlantNaam);
MaakActiveDirectoryOU.Parameters.Add("Path", WebConfigurationManager.AppSettings["SharedOU"].ToString());
ExecuteRemote2(MaakActiveDirectoryOU);
這個命令在本地執行時工作正常任何人都有線索?
爲什麼downvote?謹慎解釋? – Thijser
現在我很好奇爲什麼兩個人決定downvote,我認爲這是一個合理的問題? – Thijser
我也不知道 - 這是一個很好的問題,你很清楚地列出了問題,你展示了你自己的研究成果,而且問題問得很好,而且英文完美(沒有錯別字,清晰的語言)。我upvoted至少補償一個無法解釋的downvote ..... –