-1

我正在尝试修改此 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)处理每个用户,但无法弄清楚。

4

1 回答 1

0

至于这个……

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

……就是这样……

$users = Get-ADUser -Filter *

…您只需将其替换为您的文件

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

然而,根据您的问题,由于这是一个非常常见的基本 PowerShell 事物,我假设您对此非常陌生,并建议您使用TechNet MVAMSChannel9YouTube上所有免费提供的学习资源来真正提升 PowerShell ,如以及免费提供的电子书,尽可能避免在您的学习周期中出现很多混乱和挫折。

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

于 2018-12-09T20:40:41.067 回答