You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C# PowerShell API调用Msol命令:链式调用无结果问题咨询

问题原因及解决方法

你的链式调用写法不正确,问题出在AddCommand的使用逻辑上:

  • 连续调用AddCommand时,PowerShell会将前一个命令的输出作为后一个命令的输入(管道传递),但Connect-MsolService是无输出的连接命令,没有任何对象能传递给Get-MsolCompanyInformation,且这两个命令本就不需要管道关联。
  • 而AddScript用分号分隔命令,是让PowerShell依次独立执行两条命令,这才是符合需求的执行逻辑。

修正后的链式调用代码

要实现和AddScript相同的效果,需用AddStatement()分隔两个独立命令,而非连续使用AddCommand:

using (PowerShell ps = PowerShell.Create())
{
    ps.AddCommand("connect-msolservice")
      .AddStatement() // 分隔独立执行的命令
      .AddCommand("Get-MsolCompanyInformation");
    Collection<PSObject> results = ps.Invoke();
    foreach (PSObject result in results)
    {
        label.Content = "Last AD Sync: " + result.Properties["LastDirSyncTime"].Value;
    }
}

关键区别说明

  • AddCommand:用于添加单条命令,连续调用会构建管道链,将前序命令输出传递给后续命令。
  • AddStatement:用于添加新的独立执行语句,等价于PowerShell脚本中用分号分隔命令,让多个命令按顺序独立运行。

内容的提问来源于stack exchange,提问作者meeoun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 09:20:21