[英]PowerShell: How can I output a hashtable as json and store it in a variable using a foreach loop?
我正在嘗試編寫一個與 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 作為您的問題中所示的結果(除了如mclayton在評論中所說的那樣, input
屬性值應該包裝在[...]
中作為一個數組)然后這個應該這樣做:
$json = @{
input = @(
foreach($an in $SamAccountName) {
[ordered]@{
key = "homeDirectory"
value = "\\filepath\$an"
}
}
)
}
$json | ConvertTo-Json -Depth 99
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.