术语“ Connect-AzureAD”未被识别为cmdlet的名称

时间:2019-06-11 12:20:13

标签: c# powershell azure-active-directory

从Azure AD中的C#应用​​程序运行powershell脚本。

在DLL参考下面添加

  • System.Management.Automation
  • Microsoft.Online.Administration.Automation.PSModule.Resources
  • Microsoft.Online.Administration.Automation.PSModule

Runspace runspace = RunspaceFactory.CreateRunspace();
                runspace.Open();
                Pipeline pipeline = runspace.CreatePipeline();
                pipeline.Commands.AddScript("Import-Module AzureAD -Force;");
                pipeline.Commands.AddScript("$password = ConvertTo-SecureString " + "\"abc1234\"" + " -AsPlainText -Force");
                pipeline.Commands.AddScript("$Cred = New-Object System.Management.Automation.PSCredential (" + "\"abc@abc.com\"" + ", $password)");
                pipeline.Commands.AddScript("Connect-AzureAD -Credential $Cred");
                pipeline.Commands.AddScript("Get-AzureADApplication -Filter " + "\"DisplayName eq " + "\'PortalTestApp\'" + "\"");
                var result = pipeline.Invoke();

获取错误:

  

“ Connect-AzureAD”一词不被视为cmdlet的名称,   功能,脚本文件或可操作程序。检查拼写   名称,或者如果包含路径,请确认路径正确,并   再试一次。

2 个答案:

答案 0 :(得分:8)

PowerShell v7遇到了问题,与PS v5不同,您必须使用Import-Module AzureAD导入模块。可能与OP问题无关,但是错误是相同的。

答案 1 :(得分:0)

@ user1638526正如迈克所说,您应该首先安装AzureAD模块。

您可以按照以下步骤操作:

Install-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201 -Force

Import-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201

Install-Module AzureAD -Force

-Force禁止用户输入提示,并允许脚本在后台运行。

参考:How do I install the Nuget provider for PowerShell on a unconnected machine so I can install a nuget package from the PS command line?

关于如何使用C#调用PowerShell命令或PS1文件的信息,您还可以参考link或其他SO Thread

希望这会有所帮助!