使用csv在具有powershell的office 365中分配许可证
所以我试图在csv文件中为用户分配许可证。一些用户将拥有1个以上的许可证,例如powerbi pro、e3。问题是,如果用户不需要两个许可证,csv文件中的字段将留空,这会导致我的代码中出现错误 这是我的Powershell代码使用csv在具有powershell的office 365中分配许可证,powershell,csv,office365,Powershell,Csv,Office365,所以我试图在csv文件中为用户分配许可证。一些用户将拥有1个以上的许可证,例如powerbi pro、e3。问题是,如果用户不需要两个许可证,csv文件中的字段将留空,这会导致我的代码中出现错误 这是我的Powershell代码 Connect-MSOLService $users = Import-csv 'C:\User Creation\ADUsers.csv'-delimiter "," foreach ($user in $users) { $F
Connect-MSOLService
$users = Import-csv 'C:\User Creation\ADUsers.csv'-delimiter ","
foreach ($user in $users)
{
$Firstname = $User.Firstname
$Lastname = $User.Lastname
$upn= "$Firstname.$Lastname@domain.com"
$usagelocation= $user.Usagelocation
$SKU= $user.License
$SKUS= $user.Licenses
Set-MsolUser -UserPrincipalName $upn -UsageLocation $usagelocation
Set-MsolUserLicense -UserPrincipalName $upn -AddLicenses $SKU,$SKUS
}
任何帮助都将不胜感激。
如果csv字段中填写了有效的许可证,则可以正常工作,但如果为空,则会出错。我尝试过使用if语句
{if($user.Licenses -eq "") {$user.Licenses="domain:POWER_BI_STANDARD"}
仍然出现错误您可以对
Set msoluseralicense
命令进行以下修改
Set-MsolUserLicense -UserPrincipalName $upn -AddLicenses ($SKU,$SKUS | Where-Object {$_})
说明:
语法$SKU,$SKU
生成分配给每个变量的值数组。使用@($SKU,$SKU)
生成类似的输出。当数组通过管道(|
)传输到Where Object
中时,该数组中的每个对象都将成为当前管道对象($\u
或$PSItem
)。对象执行比较或条件检查时,的脚本块({}
)内容。在这种情况下,$将作为布尔值进行计算,以查看它是否返回True
或False
。如果返回True
,则将返回该对象。否则,将不会返回该对象。在表达式周围使用()
,可以将整个输出立即返回到-AddLicenses
参数
有关使用Where-Object
及其脚本块语法的更多信息,请参见如果我将```($SKU,$SKU | Where Object{$_Licenses-eq”“}运行良好。已分配许可证的用户,但已分配空白许可证且未分配任何内容的用户您只需将其保留在Where Object{$}
。当$SKU,$SKU
通过管道输送到Where对象
时,这些对象中的每一个一次变为$\u
一个。如果它们不为null且不包含空值,则该对象的Where条件将计算为true,并且仅输出该对象。结果是一个包含非空值的字符串对象数组。这很有效。我一整天都在尝试自己对其进行排序,非常感谢:)