powershell - Powershell将数组元素作为参数传递
问题描述
我是 PowerShell 新手,我被困住了 :(。我写了一个我认为简单的脚本来将用户列表添加到 AD 组。但不幸的是它不起作用。我在数组中得到了正确的 objectId但是当我尝试将它作为参数传递时它失败了。无论如何找到前进的方法吗?我觉得这很简单,但我尝试了很多不同的事情,而且它说我被卡住了
在代码段下方添加了一些说明
$UsersToAdd = @(
'user@domain.com',
'user2@domain.com'
)
$ParentGroup = "DomainGroupX"
ForEach ($User in $UsersToAdd)
{
$UserId = az ad user list --upn $User --query [].objectId
$test = $UserId[1]
If ($UserId.count -le 1) { echo "$User not found" }else {
az ad group member add --group $ParentGroup --member-id $test
}
}
问题出在这一行: az ad group member add --group $ParentGroup --member-id $test
此 $test 项目是一个数组,其中包含一个 ObjectId,类似于 ["sdjasddheiieyieyie"]
但是现在当我尝试通过它时它失败了,而下面的方法确实有效 az ad group member add --group $ParentGroup --member-id "sdjasddheiieyieyie"
谢谢!!
解决方案
您正在使您的 JMESPath 查询比它需要的更复杂:
$UsersToAdd= 'user@domain.com','user2@domain.com'
$ParentGroup = "DomainGroupX"
Foreach ($User in $UsersToAdd) {
$UserId = az ad user list --upn $User --query [0].objectId
if ($UserId) {
az ad group member add --group $ParentGroup --member-id $UserId
} else {
"$User not found"
}
}
从一开始就对 JSON 数组进行索引可以避免不必要的复杂性。
Using[].objectId
将数组结构作为围绕objectId
值的字符串返回。另一个问题是它通过包含您必须考虑的前面空格来格式化您想要的值。
$UsersToAdd= 'user@domain.com','user2@domain.com'
$ParentGroup = "DomainGroupX"
Foreach ($User in $UsersToAdd) {
$UserId = az ad user list --upn $User --query [].objectId
$UserId = $UserId[1].Trim()
if ($UserId) {
az ad group member add --group $ParentGroup --member-id $UserId
} else {
"$User not found"
}
}
推荐阅读
- java - Java 多线程代码在 IDE 中陷入正常运行模式,但调试模式使其工作
- javascript - 客户端回调在破折号中不起作用
- c++ - 是什么导致这两个函数模板之间的重载失败?
- flutter - 存储日期和时间以设置提醒的正确方法是什么
- elasticsearch - 如何在 ElasticSearch 中查找与字符串匹配的值?
- java - 分页不将光标移动到下一页并将额外的页面添加到显示分页集中
- typescript - 我应该为索引分配什么类型
- python - 如何将变量启动为 None 并用 float 覆盖
- kotlin - 当后台操作在 kotlin native 中完成时通知主线程对象
- javascript - 手机Hold时如何防止setinterval结束(关闭屏幕)