我正在try 编写一个与REST API交互的脚本来更改活动目录(我知道这没有多大意义,但这是我们公司的做法).更改是为了修改属于特定安全组的用户列表的home目录属性.用户并不都在同一个域中,但在同一个林中并且在全局编录中注册.
到目前为止,我的 idea 是这样的:
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变量输出为"@(samcount tname="$an"),而不是$an实际是什么.