我的Office365 Powershell脚本存在问题
$expireUser = Get-MsolUser | Where-Object {$_.PasswordNeverExpires -eq $false}
$expireUser | ft DisplayName, UserPrincipalName, PasswordNeverExpires
$userinput = Read-Host 'Users in the table have the parameter PasswordNeverExpires set on $False. Set to $True? (Y/N)'
If ($userinput -eq "Y"){
Get-MsolUser | Where-Object {$_.PasswordNeverExpires -eq $false} | Set-MsolUser -PasswordNeverExpires $True
write-host "Down are visible the parameters of the users modified."
$expireUserCheck = Get-MsolUser | Where-Object {$_.UserPrincipalName -eq $expireUser.UserPrincipalName}
$expireUserCheck | ft DisplayName, UserPrincipalName, PasswordNeverExpires
}
Elseif ($userinput -eq "N")
{write-host "No change are made"}
Else
{write-host "Input not managed"}
每次更改参数的过程都是正确的,因此脚本的基本功能都可以,但问题是只有当1个用户拥有参数集时,检查才能显示带有DisplayName,UserPrincipalName和$ True的表。在PasswordNeverExpire下。 如果2个或更多用户在$ expireUser变量中,则必须显示第二个表时没有任何内容。
有什么想法吗?
非常感谢, 马可
答案 0 :(得分:0)
使用以下命令创建UserPrincipalNames数组:
$arrayOfuserPrincipalnames = $expireUser | Select -ExpandProperty UserPrincipalName
然后改变这一行:
$expireUserCheck = Get-MsolUser | Where-Object {$_.UserPrincipalName -eq $expireUser.UserPrincipalName}
为:
$expireUserCheck = Get-MsolUser | Where-Object {$_.UserPrincipalName -in $arrayOfUserPrincipalnames}