在asp.net中使用Powershell.. NET应用程序部署到IIS服务器
本文关键字:部署 应用程序 IIS 服务器 NET Powershell net asp | 更新日期: 2023-09-27 17:49:14
我正在开发一个ASP测试项目。我使用System.Management.Automation来执行一些PowerShell cmdlet。有些cmdlet来自Azure Powershell模块。
当我从Visual Studio运行它时,代码工作正常。但是当我将网站发布到IIS时,一些cmdlet和这些脚本不起作用。
示例,参见前面的注释:
var shell = PowerShell.Create();
var script1 = "Get-AzureSubscription | Out-String"; // cant execute the cmdlet
var script2 = "C:''inetpub''wwwroot''App1''Scripts''test.ps1"; //Cant execute the script.
var script3 = "Get-Date"; //Work fine
try
{
shell.Commands.AddScript(script); // here insert the script.
Collection<PSObject> results = shell.Invoke();
//Search for errors, if some error is found redirect to an Error page.
if (shell.Streams.Error.Count > 0)
{
foreach (ErrorRecord err in shell.Streams.Error)
{
string error = err.ToString();
TempData["pserror"] = error;
return RedirectToAction("Powershellerror");
}
}
else
if (results.Count > 0)
{
foreach (var psObject in results)
{
string result2 = psObject.ToString();
TempData["psoutput"] = result2;
return RedirectToAction("PowershellOutput");
}
}
script1和script2都给出这个错误:
术语"C:'inetpub'wwwroot'App1'Scripts'test"。Ps1 '无法识别作为cmdlet、函数、脚本文件或可操作程序的名称。检查名称的拼写,如果包含了路径,请进行验证路径正确,请重试。
和
术语"Get-AzureSubscription"未被识别为Cmdlet、函数、脚本文件或可操作程序。检查拼写的名称,或者如果包含了路径,则验证该路径是否为正确,再试一次。
可能是什么??IIS设置中缺少了什么?
您可能需要导入Azure模块,请按照以下建议尝试:
https://stackoverflow.com/a/6267517/1183475var ps = PowerShell.Create(myRS);
ps.Commands.AddCommand("Import-Module").AddArgument(@"g:'...'PowerDbg.psm1")
ps.Invoke()
我没有在这台机器上安装Azure PS工具,但路径应该是:"C:'Program Files (x86)'Microsoft sdk 'Windows Azure'PowerShell'Azure'Azure 'Azure.psd1