通过功能传递外壳程序脚本

时间:2019-05-30 20:46:21

标签: asp.net-mvc powershell razor active-directory

我正在创建一个应用程序,以使用Power Shell脚本交互功能通过MVC管理广告组。我创建了一个函数,该函数将返回值以填充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)"

当我输入环境变量时,我得到了我所属的域。当我通过脚本时,它应该会有所价值。

1 个答案:

答案 0 :(得分:0)

好吧,因此用AddCommand()替换AddScript()会执行脚本,但是使用环境变量来获取数据时会抛出命令未找到异常。