asp.net-mvc - 通过函数传递 shell 脚本
问题描述
我正在创建一个应用程序来通过 MVC 使用 Power Shell 脚本交互来管理广告组。我创建了一个函数,它将返回值以填充 HTML 的剃刀组件。但是,当我从基本目录位置传递 shell 脚本时,组件没有填充该值。
我尝试使用 AppDomain.CurrentDomain.BaseDirectory 设置脚本的路径,没有生成错误,也没有得到任何输出。
**剃刀代码**
@functions {
public string PowerShellExecutor(string script) {
var shell = PowerShell.Create();
string outString = "";
shell.Commands.AddScript(script);
var results = shell.Invoke();
if (results.Count>0)
{
var builder = new StringBuilder();
foreach (var psObj in results)
{
builder.Append(psObj.BaseObject.ToString() + "\r\n");
}
outString = Server.HtmlEncode(builder.ToString());
}
return outString;
}
<div class="row">
<div class="col-md-12">
@Html.TextBox("txtDir", @PowerShellExecutor(AppDomain.CurrentDomain.BaseDirectory.ToString()+ "Shell\\Get-StewardName.ps1"), new { @class = "form-control" })
@*@Html.TextBox("txtDirectory", @PowerShellExecutor("$env:USERDNSDOMAIN") , new { @class = "form-control"})*@
</div>
</div>
** Powershell 脚本 **
$StewardName = Get-ADUser $env:USERNAME -Properties DisplayName | Select -ExpandProperty DisplayName
$EmployeeNumber = Get-ADUser $env:UserName -Properties EmployeeNumber| Select -ExpandProperty EmployeeNumber
Write-Output "Steward: $StewardName ($EmployeeNumber)"
当我输入环境变量时,我得到了我所属的域。当我通过脚本时,它应该会获得一些价值。
解决方案
好的,所以用 AddCommand() 替换 AddScript() 会执行脚本,但是在使用环境变量来获取数据时,它会抛出 command not found 异常。