Powershell获取OU中所有服务器的lastlogonDate

Powershell get lastlogonDate of all servers in OU

我正在尝试使用 Powershell 获取 OU 中所有服务器的最后登录日期。

我的脚本能够收集数据但无法将其写入 csv 报告。 (当前版本仅填充服务器名称,而不是 csv 文件中的 OS 和 LogonDate 字段) 在调整输出方面需要帮助,如果您能提出改进建议也很好

$allservers = get-adcomputer -filter * -searchbase "ou=important, ou=Member Servers, dc=contoso, dc=com" | select-object -expand name
$File = "$(Get-Date -Format ddMMyy_HHmmss)"

foreach ($server in $allservers) {
    Get-ADComputer -Identity $server -Properties * | format-table Name, LastLogonDate, OperatingSystem 
    $Props = [ordered]@{
        ServerName      = $server
        OperatingSystem = $server.OperatingSystem
        LastLogonDate   = $server.LastLogonDate
    }

    $Obj = New-Object psobject -Property $Props
    $obj | Export-Csv -Path .$File.csv -NoTypeInformation -Encoding UTF8 -Append
}

我怀疑您认为 foreach 块中的第一个调用实际上是在对 $server 变量执行某些操作。您确实从 AD 加载了所有属性,但它们仅使用 Format-Table 打印到控制台,未分配给 $server.

如果您将第二个 Get-ADComputer 调用更改为此,它将起作用。 替换

Get-ADComputer -Identity $server -Properties * | format-table Name, LastLogonDate, OperatingSystem

有了这个:

$server = Get-ADComputer -Identity $server -Properties * 
$server | format-table Name, LastLogonDate, OperatingSystem 

但是,我可能会用这个替换整个东西,它会做同样的事情:

$File = "$(Get-Date -Format ddMMyy_HHmmss)"
Get-ADComputer -Filter * -SearchBase "ou=important, ou=Member Servers, dc=contoso, dc=com" -Properties LastLogonDate,OperatingSystem | 
    Select-Object DistinguishedName, LastLogonDate, OperatingSystem | 
    Export-Csv -Path .$File.csv -NoTypeInformation -Encoding UTF8