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

use*_*526 14 c# powershell azure-active-directory

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

添加了以下 DLL 参考

  • 系统.管理.自动化
  • 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();
Run Code Online (Sandbox Code Playgroud)

获取错误:

术语“Connect-AzureAD”不被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。

Sha*_*bob 17

我在使用 PowerShell v7 时遇到了问题,与 PS v5 不同,您必须使用Import-Module AzureAD. 它可能与 OP 问题无关,但错误是相同的。


Ama*_*SFT 5

@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
Run Code Online (Sandbox Code Playgroud)

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

参考:如何在未连接的机器上安装 PowerShell 的 Nuget 提供程序,以便我可以从 PS 命令行安装 nuget 包?

关于如何使用 C# 调用 PowerShell 命令或 PS1 文件,您也可以参考链接或另一个SO Thread

希望这可以帮助!

  • “Install-PackageProvider:未找到与提供程序“NuGet”的指定搜索条件匹配的内容。程序包提供程序需要“PackageManagement”和“Provider”标签。请检查指定的程序包是否具有这些标签。” (3认同)