繁体   English   中英

C#调用Powershell脚本失败

[英]C# Calling Powershell script fails

我从C#应用程序调用PS脚本时遇到一种奇怪的情况:我创建了一个简单的应用程序,该应用程序应从Azure环境中检索虚拟机的状态(运行,停止,释放)。 因此,我尝试了几件事,最简单的一件事是执行PowerShell脚本,获取VM的状态并在我的应用程序中使用它,以便我可以使用此信息来做一些事情。 在运行PS脚本之前,我进行了一次查找替换,以便C#解析用户名和密码以登录Azure,这样它就不会存储在我的ps1文件中。

当我在开发计算机(Win10和VS2017社区)上尝试此方法时,它都可以正常运行(C#调用PowerShell并获取输出)。 该脚本已执行,我可以根据需要使用该信息。 但是,当我在服务器(Win2012)上尝试此操作时,它告诉我Login-Azurermaccount和get-azurermvm无法识别为cmdlet的名称。 当我尝试通过运行powershell -file'filename.ps1'从命令行运行完全相同的脚本时,它是否应该运行?

有人对此可能有相同的问题有解释吗?

在dev.machine和server上是PS:5.1的相同版本

Win10 Dev框上的成功表明您已安装/加载了Azure模块,并且您已经重新登录Azure。

必须在主机上(直接或代理)安装/加载Azure模块,并且必须登录到Azure才能使用它们并访问Azure数据。

根据自己的配置文件在本地计算机上运行它,发现它可能表明模块在运行时已自动加载。 在本地使用-noprofile尝试PowerShell.exe,您可能会得到不同的结果(服务器上的错误)。

至于使其在两种环境中都能正常工作,我建议您将代码放入脚本中以显式添加所需的模块(假设您已在服务器上安装了SDK)。

将其添加到模块顶部作为第一行。 在执行此操作之前,请确认文件在两台计算机上都存在,以表明文件的安装方式相同。

导入模块“ c:\\ ProgramFiles(x86)\\ Microsoft SDKs \\ Azure \\ PowerShell \\ AzureRM.psd1”

如果尚未安装在服务器上,请参见以下安装说明。

https://docs.microsoft.com/zh-CN/powershell/azure/other-install?view=azurermps-5.1.1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM