【发布时间】:2014-02-13 15:05:30
【问题描述】:
我正在调用 office365 的 get-msoluser cmdlet,并在 powershell 中使用以下 cmdlet
Get-MsolUser -UserPrincipalName user@organization.onmicrosoft.com | ForEach-Object{ $_.licenses}
输出是许可证的集合,我希望在 c# 中运行相同的脚本。所以我写了如下代码
private void displayLicenses(){
Command cmd = new Command("Get-MsolUser");
cmd.Parameters.Add("UserPrincipalName","user@organization.onmicrosoft.com");
Command cmd2 = new Command("ForEach-Object");
cmd2.Parameters.Add("$_.licenses.AccountSku");
Pipeline pipe = Office365Runspace.CreatePipeline();
pipe.Commands.Add(cmd);
pipe.Commands.Add(cmd2);
Console.WriteLine("Before invoking the pipe");
ICollection<PSObject> result = pipe.Invoke();
CheckForErrors(pipe);
Console.WriteLine("Executed command {0} + {1} with no error", cmd.CommandText, cmd2.CommandText);
foreach(PSObject obj in result){
foreach(PSPropertyInfo propInfo in obj.Properties){
Console.WriteLine(propInfo.Name+": "+propInfo.Value+" "+propInfo.MemberType);
}
}
}
但是我在执行这个函数时仍然收到错误提示
未处理的异常: System.Management.Automation.CommandNotFoundException:术语 'ForEach-Object' 未被识别为 cmdlet、函数的名称, 脚本文件或可运行的程序。检查名称的拼写,或 如果包含路径,请验证路径是否正确并尝试 再次。
我检查了我的项目是否引用了包含 ForEach-Object cmdlet 的 System.management.Automation.dll 文件。
我在 powershell 中找到了使用这个 cmd 的 dll
(Get-Command ForEach-Object).dll
谢谢, 萨提亚
【问题讨论】:
标签: c# powershell foreach office365 powershell-remoting