Get-AzureAccount在从C#运行时找不到帐户
本文关键字:找不到 运行时 在从 Get-AzureAccount | 更新日期: 2023-09-27 18:28:08
我有以下powershell脚本("azureccounts.ps1"):
$accountExisted = @(Get-AzureAccount)
Write-Log $accountExisted.Count
当我从Windows Powershell运行它时,它会找到5个Azure帐户
当我从CMD运行它时,它会找到5个Azure帐户。(cmd中的"powershell azurecurts.ps1")
但是当我从C#Web应用程序执行脚本时,它找不到任何帐户。
使用PowerShell API:
PowerShell powerShell = PowerShell.Create();
powerShell.AddScript(@"C:'...'azureaccounts.ps1");
var results = powerShell.Invoke();
还有进程对象:
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。但我想你想让这个剧本做其他的事情。