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
我正在尝试使用 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