Powershell 从多个';获取ADComputer';命令

Powershell 从多个';获取ADComputer';命令,powershell,csv,active-directory,Powershell,Csv,Active Directory,使用Get ADComputer命令,我根据上次设置密码的时间收集每个OU的操作系统计数。我面临的问题是将整个内容导出到CSV文件中 当我附加(Export Csv-Path'c:\blah')时,它只接受最后一个命令,而将其他命令留在控制台中 $ou1 = 'OU=Computers,OU=Name1,DC=domain,DC=com' $ou2 = 'OU=Computers,OU=Name2,DC=domain,DC=com' $ou3 = 'OU=Computers,OU=name3,D

使用
Get ADComputer
命令,我根据上次设置密码的时间收集每个OU的操作系统计数。我面临的问题是将整个内容导出到CSV文件中

当我附加(
Export Csv-Path'c:\blah'
)时,它只接受最后一个命令,而将其他命令留在控制台中

$ou1 = 'OU=Computers,OU=Name1,DC=domain,DC=com'
$ou2 = 'OU=Computers,OU=Name2,DC=domain,DC=com'
$ou3 = 'OU=Computers,OU=name3,DC=domain,DC=com'

$prop = 'OperatingSystem -Like "Windows 10*"'

Get-ADComputer -SearchBase $ou1 -Filter $prop -Property DistinguishedName, OperatingSystem, pwdLastSet |
    Select-Object DistinguishedName, OperatingSystem,
        @{Name="pwdLastSet";Expression={[datetime]::FromFileTime($_.pwdLastSet)}},
        @{Name="90_Days_Old";Expression={([datetime]::FromFileTime($_.pwdLastSet)).AddDays(90) -le (Get-Date)}}

Get-ADComputer -SearchBase $ou2 -Filter $prop -Property DistinguishedName, OperatingSystem, pwdLastSet |
    Select-Object DistinguishedName, OperatingSystem, 
        @{Name="pwdLastSet";Expression={[datetime]::FromFileTime($_.pwdLastSet)}},
        @{Name="90_Days_Old";Expression={([datetime]::FromFileTime($_.pwdLastSet)).AddDays(90) -le (Get-Date)}}

Get-ADComputer -SearchBase $ou3 -Filter $prop -Property DistinguishedName, OperatingSystem, pwdLastSet |
    Select-Object DistinguishedName, OperatingSystem, 
        @{Name="pwdLastSet";Expression={[datetime]::FromFileTime($_.pwdLastSet)}},
        @{Name="90_Days_Old";Expression={([datetime]::FromFileTime($_.pwdLastSet)).AddDays(90) -le (Get-Date)}} 

我的预期结果是将所有三个命令的内容都放入一个CSV文件。

您可以将所有OU放入一个数组,然后使用
foreach
%
)作为
搜索库。这还允许您将结果通过管道(
|
)传输到csv:

#OUs
$OUs = @('OU=Computers,OU=Name1,DC=domain,DC=com','OU=Computers,OU=Name2,DC=domain,DC=com','OU=Computers,OU=name3,DC=domain,DC=com')
$prop = 'OperatingSystem -like "Windows 10*"'
#forach -->  | CSV
$OUs | %{Get-ADComputer -Filter $prop -Properties DistinguishedName, OperatingSystem, pwdLastSet -SearchBase $_ | Select-Object DistinguishedName, OperatingSystem,
        @{Name="pwdLastSet";Expression={[datetime]::FromFileTime($_.pwdLastSet)}},
        @{Name="90_Days_Old";Expression={([datetime]::FromFileTime($_.pwdLastSet)).AddDays(90) -le (Get-Date)}}} | Export-Csv Test123.csv -NoTypeInformation

您可以将所有OU放入一个数组中,然后使用
foreach
%
)作为
搜索库。这还允许您将结果通过管道(
|
)传输到csv:

#OUs
$OUs = @('OU=Computers,OU=Name1,DC=domain,DC=com','OU=Computers,OU=Name2,DC=domain,DC=com','OU=Computers,OU=name3,DC=domain,DC=com')
$prop = 'OperatingSystem -like "Windows 10*"'
#forach -->  | CSV
$OUs | %{Get-ADComputer -Filter $prop -Properties DistinguishedName, OperatingSystem, pwdLastSet -SearchBase $_ | Select-Object DistinguishedName, OperatingSystem,
        @{Name="pwdLastSet";Expression={[datetime]::FromFileTime($_.pwdLastSet)}},
        @{Name="90_Days_Old";Expression={([datetime]::FromFileTime($_.pwdLastSet)).AddDays(90) -le (Get-Date)}}} | Export-Csv Test123.csv -NoTypeInformation

你有很多多余的代码。使用循环来避免这种情况。此外,不需要将属性
pwdLastSet
(包含AD属性的原始值)转换为
DateTime
值。
Get-ADComputer
cmdlet已为您执行此操作(所需属性的名称为
PasswordLastSet


你有很多多余的代码。使用循环来避免这种情况。此外,不需要将属性
pwdLastSet
(包含AD属性的原始值)转换为
DateTime
值。
Get-ADComputer
cmdlet已为您执行此操作(所需属性的名称为
PasswordLastSet