PowerShell foreach过滤器

时间:2012-06-15 12:03:28

标签: powershell passwords office365

我尝试开发增量密码更改PowerShell脚本,就像这样

输入csv文件:D:\ pws \ newpws.csv

userID,userIdentity,passwd
201206151300057,John.Doe@contoso.com,pa$$worD1
201206151301452,Tommy.Toe@contoso.com,pa$$worD2
201206151302871,Vince.Voe@contoso.com,pa$$worD3
201206151305021,William.Woe@contoso.com,pa$$worD4
201206151306433,Xerxes.Xoe@contoso.com,pa$$worD5
201206151346790,Yvonne.Yoe@contoso.com,pa$$worD6

输出csv文件:D:\ pws \ lastprocessedId.csv

lastID
201206141186509

到目前为止我只有这个:

import-csv D:\pws\newpws.csv | foreach {

Set-MSOnlineUserPassword -Identity $_.userIdentity -Password $_.passwd -ChangePasswordOnNextLogon:$true -Credential $cred

}

我想修改此脚本,以便它只处理csv行:

  1. 使用高于当前日期时间的用户ID减去2小时(四舍五入到小时)加上此格式的'00000':yyyymmddhh00000 - 例如如果当前时间是2012年6月15日下午3:35,则过滤器应包括:201206151300000, AND
  2. 的userID高于lastprocessedId.csv
  3. 中存储的lastID

    脚本执行完成后,应使用newpws.csv中最后一行的userID更新lastprocessedId.csv中的lastID

1 个答案:

答案 0 :(得分:1)

您需要在管道的Where阶段之前加入Foreach过滤器,例如:

import-csv D:\pws\newpws.csv | 
    where {$_.userID -gt $lastID -and ...} |
    foreach { Set-MSOnlineUserPassword -Identity $_.userIdentity `
              -Password $_.passwd -ChangePasswordOnNextLogon:$true -Credential $cred
}