c# - 如何访问存储在 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 中,但无法弄清楚从函数返回什么的方式。
解决方案
所以,我所要做的就是在 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);
});
}
});
})
推荐阅读
- excel - 如何批量替换Excel中的重复项?
- reactjs - 找不到模块“@src/pages/MainPages”或其相应的类型声明
- laravel - 如何在一个文件夹上运行多个 laravel 网站?
- java - Spring oauth2 /oauth/token 导致在应用程序中调用不同/另一个 API/方法
- python - 在一行中将一个数字减半
- matplotlib - 如何使用matplot lib设置条和轴之间的距离
- vba - excel/vba 中的模糊匹配
- android - 在 ViewPager 和 Recyclerview 中自动播放视频,如 instagram
- node.js - 如何重用 graphQl 解析器
- javascript - 样式化组件 v5.3 createGlobalStyles 不起作用