powershell - 使用一个查询的结果作为命令的参数(在单行上)
问题描述
从 PowerShell 管理 AzureAD、Exchange Online、Teams 等,我喜欢将单行代码保存在稍后调用的文本文件中,但有时,当我只知道对象的名称时,这些命令需要对象 ID。
例如,cmdletAdd-TeamUser
允许我将用户添加到团队组。但是,当我想提供名称时,它需要组 ID。我可以通过以下方式从名称中获取组 ID:
Get-Team | Where-Object {$_.DisplayName -eq "Produce Sales"} | select GroupId
输出(部分模糊):
是否可以使用该查询内联Add-TeamUser
?就像是:
Add-TeamUser -GroupId {the-above-query} -User someone@somewhere.com
解决方案
很可能,cmdletAdd-TeamUser
接受管道输入。Id 运行 aGet-Help Add-TeamUser -Full
以查看它接受什么类型的值,以便您可以通过管道传递给它。或者,您可以将值分配给变量并将其发送到下一个命令。在这种情况下,我们有一个值数组,我们遍历每个值,只获取 ID,然后通过 ID 添加它们:
$ListOfNames = @("Produce Sales","Shoe Sales", "ETC")
Foreach($name in $ListOfNames){
$GroupID = Get-Team | Where-Object {$_.DisplayName -eq "$name"} | Select-Object -ExpandProperty GroupId
Add-TeamUser -GroupId $GroupID -User someone@somewhere.com
}
另一种使用方法是将其传递给foreach-object
cmdlet,让它为您从管道中获取值。它也可以在上面的示例代码中使用:
Get-Team | Where-Object {$_.DisplayName -eq "Produce Sales"} | Select-Object -ExpandProperty GroupId | ForEach-Object -Process{
Add-TeamUser -GroupId $_ -User someone@somewhere.com}
推荐阅读
- python - Python Global Not Behaving As Expected
- python - Web 应用程序中的 Gremlin Python
- r - 计算字符串列中关键字列表的出现总数
- python - 如何在应用程序的 urls.py 中设置路径以显示 localhost:8000/xxx(使用 django2.1.8)
- c# - 如何使循环每秒迭代 60 次?
- c++ - 如何在类向量中存储/使用外部函数指针
- java - 使用不记名令牌的改造请求
- javascript - 使用 Value from Option 从 JSON 中获取数据
- vue.js - vue-loader 15、webpack 4、vue-datepicker-local 错误运行:npm run dev
- python - 错误的解决方法 while_loop() got an unexpected keyword argument 'maximum_iterations'