0

現在、私は「中間者」である ac# Web サービスを開発しています。クライアントはメソッド「executeScript(String script)」を呼び出すことができ、私の Web サービスはスクリプトを呼び出します。

現在、Web サービスは、クライアントが実行するスクリプトを認識していません (通常はスクリプトを交換します)。出力を正しく読み取るにはどうすればよいですか? たとえば、Get Process などです。

私のエラーリーディングはすでに機能しています。スクリプト例: "Get-Mailbox xxxxx"

if (pl.Error.Count > 0)
 {
 //error in pipeline
 var errorList = pl.Error.Read() as Collection<ErrorRecord>;
 if (errorList != null)
 {
     foreach (ErrorRecord er in errorList)
     {
     logger.Error(er.Exception.Message);
     ExceptionObject eo = new ExceptionObject();
     eo.message = er.Exception.Message;
     eo.source = er.Exception.Source;
     eo.stackTrace = er.Exception.StackTrace;
     errors.Add(eo);
     }
  }
  if (pso != null)
  {
      foreach (PSObject o in pso)
      {
      logger.Info("size: " + o.Properties.Count());
      logger.Info(o.ToString());
      foreach (PSPropertyInfo psprop in o.Properties)
       {
           sb.AppendLine("Name: " + psprop.Name + ", Value: " + psprop.Value + ", MemberType: " + psprop.MemberType);
        }
   }
   logger.Info(pso.ToString());
   pro.result = sb.ToString();
}

logger.Info(o.ToString()); -> Get メールボックス xxxxx

プロパティ: 「名前: 長さ、値: 19、メンバータイプ: プロパティ」

それは正しい出力ではありません。元のpowershellコンソールと同じように、応答を文字列として取得する方法はありますか? (すべてのスクリプトで動的に!)

4

2 に答える 2

0

Windows リモート管理 (WinRM)をご覧ください。これにより、PowerShell スクリプトをリモートで実行できます。

WinRM を使用すると、Web サービスを構築するよりも優れたソリューションになる可能性が高くなります。これは、ユーザーがリモートで実行できる操作を制限できるためです。Web サービスにはセキュリティ ホールが含まれている可能性があり、誰が何を実行したかのログが制限され、不要なコードが実行される可能性があります。

于 2013-09-09T09:19:26.737 に答える