powershell - 将 powershell 的输出连接到对象 id
问题描述
遇到 powershell 命令问题,我正在尝试批量许可一组用户,但我很难让一个命令的输出成为另一个命令的输入,我们将不胜感激
我第一次尝试
Get-MsolUser -All -UnlicensedUsersOnly -City "city name" | ForEach {Set-MsolUserLicense -AddLicenses "Account SKU"}
然后我尝试了
Get-MsolUser -All -UnlicensedUsersOnly -City "City Name" | select-object UserprincipalName | ForEach {Set-MsolUserLicense -Userprincipalname <String> -AddLicenses "Account SKU ID"}
解决方案
通常,您只需要ForEach-Object
cmdlet(其内置别名为foreach
):
对于不支持来自管道的直接输入的目标 cmdlet [使用提供的特定对象]
用于在脚本块(
{ ... }
)中使用多个表达式或命令自定义处理每个输入对象,其中自动变量$_
表示手头的输入对象。
具体来说,在您的情况下,您不需要调用ForEach-Object
,尽管您仍然可以使用这样的调用,如 TessellatingHeckler 的回答所示,它不仅不必要的冗长而且速度明显较慢。
Get-MsolUser
输出类型的对象[Microsoft.Online.Administration.User]
,并且Set-MsolUserLicense
的-UserPrincipalName
参数旨在通过它们的.UserPrincipalName
属性隐式绑定到此类对象,因此您可以简单地将输出直接通过管道传递到Get-MsolUser
Set-MsolUserLicense
:
Get-MsolUser -All -UnlicensedUsersOnly -City "city name" |
Set-MsolUserLicense -AddLicenses "Account SKU ID"
推荐阅读
- javascript - 在两个元素悬停时显示内容
- java - 错误:java:包 org.springframework.boot.loader 不存在
- sql-server - 对通过 ODBC 链接的 MSSQL 使用 VBA 中的 Database.Execute 方法的最佳方式
- elasticsearch - 使用 Elasticsearch 实现搜索
- c++ - 如何强制模板参数为枚举或枚举类?
- python-3.x - 我无法在嵌套循环中打印出来。我试图打印只有 2 个阶乘但无法打印出来的数字
- c - scanf ("%s", string) 的漏洞
- excel - 删除#NULL!使用 Excel 宏
- bash - Bash - 解析ini文件,通过值查找节名
- android - Android Studio 编译器无法编译我的 AdsClass