2014-10-10 2 views
1

У меня есть проблема с этим 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, ничего не появляется, когда должна отображаться вторая таблица.

Любая идея?

Большое спасибо, Marco

ответ

0

создать массив UserPrincipalNames с помощью следующих действий:

$arrayOfuserPrincipalnames = $expireUser | Select -ExpandProperty UserPrincipalName 

затем изменить эту строку:

$expireUserCheck = Get-MsolUser | Where-Object {$_.UserPrincipalName -eq $expireUser.UserPrincipalName} 

к:

$expireUserCheck = Get-MsolUser | Where-Object {$_.UserPrincipalName -in $arrayOfUserPrincipalnames} 
+0

Да, это работает! Большое вам спасибо! – smark91

Смежные вопросы