首页 > 解决方案 > 如何访问存储在 PSObject 中的函数中的值?

问题描述

我创建了一个函数,当我将脚本路径传递给它时,它会返回 PowerShell 属性列表。我无法访问函数存储它们的对象中的值。基本上这个函数的目的是在 webgrid 中加载广告属性。

尝试使用断点来跟踪值是否已加载。基本上,这些值是从我通过脚本获取的 AD 组中存储的属性名称和字符串加载的。我得到了 6 个用户的计数,但是当我将它们加载到 textarea 中时,返回值看起来像“对象对象”。我在放置断点时添加了值的屏幕截图。

public List<SelectListItem> PowerShellExecutorLst(string scriptPath, string arg)
    {
        string outString = "";
        var shell = PowerShell.Create();
        shell.Commands.AddCommand(scriptPath).AddArgument(arg);
        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());
        }
        List<string> result = outString.Split(new char[] { '\n' }).ToList();
        List<SelectListItem> listItems = result.Select(s => new SelectListItem { Value = s, Text=s }).ToList();
        shell.Dispose();
        return listItems;
    }

我的脚本:

$GroupName ='Test - Group'
$SamAccountName = Get-ADGroup -Filter { CN -eq $GroupName } -Properties  SamAccountName | Select -ExpandProperty SamAccountName

#Getting Members of the Group - Not Storing Employee Number
Get-ADGroupMember -Identity $SamAccountName | where {$_.objectclass -eq 'user'} | 
Get-ADUser -Properties displayname,  samAccountName, ObjectGUID | 
Select displayname, samAccountName, ObjectGUID

具有属性的值的快照

存储在我的 psObject 中的示例值是

@{displayname=User1; samAccountName=usr1; ObjectGUID=8a3fab53-4c8b-483d-89f0-e26de236a627}
@{displayname=User2; samAccountName=usr2; ObjectGUID=0a3fab53-4c8b-483d-89f0-e26de236a627}
@{displayname=User3; samAccountName=usr3; ObjectGUID=9a3fab53-4c8b-483d-89f0-e26de236a627}

我只想将这些值填充到 webGrid 中,但无法弄清楚从函数返回什么的方式。

标签: c#powershellstring-formatting

解决方案


所以,我所要做的就是在 html 中静态定义列标题并用 jQuery 函数代码映射它。

<div id="tbl">
<table>
    <thead>
        <tr id="thead">
            <th>displayName</th>
            <th>samAccountName</th>
            <th>ObjectGUID</th>
        </tr>
    </thead>
    <tbody id="tbody">
    </tbody>
</table>

jQuery

 $(function(){

    $.ajax({
        type: "POST",
        url: "/Group/FillMembers",           
        success: function (response) {
            $.each(response.message, function (key, value) {
                var arr = value.split(";")
                var tbody = $("#tbody");
                var tr = $("<tr></tr>")
                $.each(arr, function (i, obj) {
                    var temp = arr[i].trim().split("=")[1];
                    var td = $("<td></td>")
                    td.append(temp);
                    tr.append(td);
                })
                tbody.append(tr);

            });            
        }
    });      
})

推荐阅读