gpt4 book ai didi

json - PowerShell:如何将哈希表输出为 json 并使用 foreach 循环将其存储在变量中?

转载 作者:行者123 更新时间:2023-12-05 05:33:35 26 4
gpt4 key购买 nike

我正在尝试编写一个与 Rest API 交互的脚本,以在事件目录中进行更改(我知道这没有多大意义,但我们公司就是这样做的)。更改是修改属于特定安全组的用户列表的 homeDirectory 属性。用户并不都在同一个域中,而是在同一个林中并且在全局目录中注册。

到目前为止,这就是我所拥有的:

function get-groupusers{
$memberlist = get-adgroup -filter "name -eq 'group.users'" -server "server.domain.com" -property member |select -expandproperty member
$GlobalCatalog = Get-ADDomainController -Discover -Service GlobalCatalog
foreach ($member in $memberlist){
get-aduser -identity $member -server "$($GlobalCatalog.name):3268"
}
}
$sAMAccountName = (get-groupusers).samaccountname

这是我遇到问题的部分:

foreach($an in $SamAccountName){
$json = @{
input = @{
key = "homeDirectory"
value = "\\filepath\$an"
}
}
}

这里的目标是将哈希表转换为json(与API交互所需的格式),并按以下格式保存(注意,“输入”“键”和“值”键都是什么API 实际使用,而不仅仅是替换):

{
"input":{
"key":"homeDirectory",
"value":"\\\\filepath\\$an"
},
{
"key":"homeDirectory",
"value":"\\\\filepath\\$an"
}
}

但是现在,foreach 循环只是用最后一组哈希表覆盖了 $json 变量。循环正确地遍历列表,因为我可以在其中放入一个 convertto-json|write-host cmdlet,然后 $an 变量输出为“@(samaccountname="$an") 而不是 $an 实际上的任何内容是。

最佳答案

如果我的猜测是正确的,并且您想要一个结果 Json 作为您问题中显示的那个(除了注释中说明的 mclaytoninput 属性值应该包含在[...] 成为一个数组)那么应该这样做:

$json = @{
input = @(
foreach($an in $SamAccountName) {
[ordered]@{
key = "homeDirectory"
value = "\\filepath\$an"
}
}
)
}

$json | ConvertTo-Json -Depth 99

关于json - PowerShell:如何将哈希表输出为 json 并使用 foreach 循环将其存储在变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73790052/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com