![将 2 个 PowerShell 命令合并为 1 个](https://linux22.com/image/678225/%E5%B0%86%202%20%E4%B8%AA%20PowerShell%20%E5%91%BD%E4%BB%A4%E5%90%88%E5%B9%B6%E4%B8%BA%201%20%E4%B8%AA.png)
我有一个 powershell 命令来列出所有 AD 计算机的上次登录日期
Get-ADComputer -Filter {enabled -eq $true} -properties * | select Name, LastLogonDate | Sort LastLogondate -Descending | Export-csv c:\co.csv
另一个命令列出所有广告计算机
dsquery * domainroot -filter "(&(objectCategory=computer)(operatingSystem=Windows XP*))" -limit 1000 > c:\XP_Machines.txt
因此,如果我们可以过滤所有 xp 计算机和上次登录,我们就可以列出所有未使用的 xp 计算机并升级我们正在使用的计算机
答案1
由于操作系统有一个 AD 属性,您可以直接将其添加到命令的过滤器中:
Get-ADComputer -Filter {(enabled -eq $true) -AND (OperatingSystem -like "*XP*")} -properties LastLogonDate,OperatingSystem | select Name, LastLogonDate, OperatingSystem | Sort LastLogondate -Descending | Export-csv c:\co.csv
这将获取已启用并安装有 Windows XP 的计算机。
答案2
除了Tobias提供的答案外,还有不同的符号:
$Filter = {(Enabled -eq $True) -and (OperatingSystem -like 'Windows XP*')}
$Properties = 'Enabled','LastLogonDate','OperatingSystem','Name'
$ResultSetSize = '3'
Get-ADComputer -Filter $Filter -Properties $Properties -ResultSetSize $ResultSetSize `
| Select-Object -Property 'Name','LastLogonDate' `
| Sort-Object -Property 'LastLogonDate'
Name LastLogonDate
---- -------------
PC12345 10-02-2015 09:55:41
PC67890 23-11-2015 08:40:49
PCX0000 12-01-2016 15:23:29