从文件获取用户列表以进行Powershell循环

时间:2018-12-09 03:37:41

标签: powershell loops

我正在尝试修改此PowerShell脚本,以允许从文本或CSV文件输入用户。我已经直接从Tim Rhymer提取了脚本。

这是原始脚本:

Import-Module ActiveDirectory

function Get-ADUsersLastLogon() {
  $dcs = Get-ADDomainController -Filter {Name -like "*"}
  $users = Get-ADUser -Filter *
  $time = 0
  $exportFilePath = "c:lastLogon.csv"
  $columns = "name,username,datetime"

  Out-File -FilePath $exportFilePath -Force -InputObject $columns

  foreach ($user in $users) {
    foreach ($dc in $dcs) { 
      $hostname = $dc.HostName
      $currentUser = Get-ADUser $user.SamAccountName | Get-ADObject -Server $hostname -Properties lastLogon

      if ($currentUser.LastLogon -gt $time) {
        $time = $currentUser.LastLogon
      }
    }

    $dt = [DateTime]::FromFileTime($time)
    $row = $user.Name + "," + $user.SamAccountName + "," + $dt

    Out-File -FilePath $exportFilePath -Append -NoClobber -InputObject $row

    $time = 0
  }
}

Get-ADUsersLastLogon

我想我应该修改脚本的一部分,设置$user的变量,以及foreach ($user in $users)循环如何处理每个用户,但无法弄清楚。

1 个答案:

答案 0 :(得分:0)

至此...

  

允许从文本或CSV文件输入用户。

...这就是全部...

$users = Get-ADUser -Filter *

...您只需将其替换为文件

$users = Import-Csv -Path $UncToUserList.csv

但是,由于您的问题,由于这是一种非常常见的PowerShell基本知识,因此我假设您对此非常陌生,并建议您使用TechNet上的所有免费可用学习资源来逐步提高PowerShell的使用率。 MVAMSChannel9YouTube,以及免费提供的eBooks,以尽可能避免学习周期中的混乱和挫败感。

此外,您永远不要运行任何不受信任的代码,或者您不完全理解的代码。仅在可以考虑生产之前完全恢复的测试环境中使用,以避免可能导致您发生RPE错误的事情-“恢复生产事件”。