簡體   English   中英

C#PowerShell遠程處理問題:未實現方法或操作

[英]C# PowerShell Remoting issue: method or operation not implemented

我在使用Powershell在其他計算機上調用命令的C#代碼有問題。 當我將其輸入Powershell時,可以正常工作,但是當我嘗試使用C#UI應用程序調用它時,它將引發異常Method or operation not implemented. 這是代碼:

Command cmd = new Command(@".\remoteSchedule.ps1");

//determine if there is computer name or IP address
if (Char.IsDigit(cboMachine.Text.ToString().FirstOrDefault()))
    cmd.Parameters.Add("ComputerName", cboScheduleMachine.Text);
else
    cmd.Parameters.Add("ComputerName", cboScheduleMachine.Text + "." + ConfigurationManager.AppSettings["Domain"]);

cmd.Parameters.Add("UserName", @txtScheduleUsername.Text);
cmd.Parameters.Add("Password", txtSchedulePassword.Text);
cmd.Parameters.Add("TaskName", "\"" + txtScheduleTaskName.Text + "\"");
cmd.Parameters.Add("Command", "\"" + @txtScheduleCommand.Text + "\"");
cmd.Parameters.Add("arguments", "\"" + txtScheduleArguments.Text + "\"");
cmd.Parameters.Add("startDate", dpkScheduleStartDate.SelectedDate.Value.ToString("MM-dd-yyyy"));
cmd.Parameters.Add("startTime", txtScheduleStartTime.Text);
cmd.Parameters.Add("workingDirectory", "\"" + @txtWorkingFolder.Text + "\"");
cmd.Parameters.Add("run", chkScheduleRun.IsChecked);
pipeline.Commands.Add(cmd);

// execute the script
Collection<PSObject> results = pipeline.Invoke();
runspace.Close();

StringBuilder stringBuilder = new StringBuilder();
foreach (PSObject obj in results)
{
    stringBuilder.AppendLine(DateTime.Now.ToString() + ": ");
    stringBuilder.AppendLine(obj.ToString());
}
txtScheduleOutput.SelectionStart = 0;
txtScheduleOutput.Text = stringBuilder.ToString();

這是Powershell腳本處理參數的部分:

Param(
[string]$ComputerName = $(throw "Missing parameter ComputerName"),
[string]$UserName = $(throw "Missing parameter UserName"),
[string]$Password = $(throw "Missing parameter Password"),
[string]$TaskName = $(throw "Missing parameter taskName"),
[string]$Command = $(throw "Missing parameter Command"),
[string]$arguments = $(throw "Missing parameter arguments"),
[datetime]$startDate = $(throw "Missing parameter startDate"),
[string]$startTime = $(throw "Missing parameter startTime"),
[string]$workingDirectory = $(throw "Missing parameter workingDirectory"),
[bool]$run = $(throw "Missing parameter run")
)

請幫助! 謝謝!

如果我正確理解這一點,則說明您正在遠程計算機上調用該命令。 但是,您正在使用包含命令的文件。 調用Invoke時,它試圖在遠程系統上查找.\\remoteSchedule.ps1 ,但失敗很慘。

簡單的解決方案是確保remoteSchedule.ps1位於所有系統都可以訪問的驅動器上,並且確保將ExecutionPolicy設置為允許未簽名的腳本。

不平凡的是重寫整個腳本以完成腳本中的所有操作(如腳本塊),然后直接調用而不是調用文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM