gpt4 book ai didi

c# - 从 C# 运行时 Get-AzureAccount 未找到帐户

转载 作者:行者123 更新时间:2023-12-03 01:52:14 27 4
gpt4 key购买 nike

我有以下 powershell 脚本(“azureaccounts.ps1”):

$accountExisted = @(Get-AzureAccount)
Write-Log $accountExisted.Count

当我从 Windows Powershell 运行它时,它发现 5 个 Azure 帐户。
当我从 CMD 运行它时,它发现 5 个 Azure 帐户。 (cmd 中的“powershell azureaccounts.ps1”)

但是当我从 C# Web 应用程序执行脚本时,它找不到任何帐户。

使用 PowerShell API:

PowerShell powerShell = PowerShell.Create();
powerShell.AddScript(@"C:\...\azureaccounts.ps1");
var results = powerShell.Invoke();

还有 Process 对象:

string sPowershellDir = @"C:\...\WindowsPowerShell\v1.0";
string sDeploymentScriptDir = @"C:\...\azureaccounts.ps1";
string sCommand = String.Format(@"powershell.exe -ExecutionPolicy ByPass -File {0}", sDeploymentScriptDir};
ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd", "/c " + sCommand);
procStartInfo.UseShellExecute = false;
procStartInfo.WorkingDirectory = sPowershellDir;
Process oProcess = Process.Start(procStartInfo);

一种解决方案是执行 Add-AzureAccount,但该 cmdlet 会提示弹出窗口,因此它不会自动发生。

有什么建议吗?

最佳答案

当您从命令行执行时,您会继承之前执行的身份验证。您可能已经通过现在想要避免的弹出窗口进行了身份验证。从 PowerShell 的角度来看,使用 Web 应用程序或新流程,您可以从从未通过 Azure 环境身份验证的流程开始。

为了以无人值守的方式进行身份验证,您可能需要遵循 https://azure.microsoft.com/en-us/documentation/articles/resource-group-authenticate-service-principal/ 文档中的描述。 。请注意,本文档基于 Azure 模块 V1+。

不过,想法是一样的。请注意,如果您从 1 个帐户以无人值守的方式连接,PowerShell 脚本将回答 1。但我想您希望该脚本执行其他操作。

关于c# - 从 C# 运行时 Get-AzureAccount 未找到帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34454727/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com