2017-12-22 12 views
0

ちょっと私の作品ドメインですべてのコンピュータを取得するためにスクリプトを実行しようとしていますが、この例では、オペレーティングシステムバージョン10.0(10240)とバージョン10.0(10586)のコンピュータを取得しようとしています。Get-ADComputerから複数のオペレーティングシステムのバージョンをフィルタリングする

これは私が持っているものです。

$OSVersion = "10.0 (10240)", "10.0 (10586)" 
Get-ADComputer -Filter ($_.OperatingSystem -eq $OSVersion) -Property * | Select-object Name,OperatingSystem,OperatingSystemVersion | Export-Csv 'C:\SomePath.csv' 

しかし、私は戻って

Get-ADComputer : Error parsing query: 'False' Error Message: 'syntax error' at position: '1'. 
At C:scriptPath:3 char:1 
+ Get-ADComputer -Filter ($_.OperatingSystem -eq $OSVersion) -Property ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : ParserError: (:) [Get-ADComputer], ADFilterParsingException 
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADFilterParsingException,Microsoft.ActiveDirectory.Management.Commands.GetADComputer 

誰もが解決策を知って取得していますか?

+1

あなたは、そのコンテキストで '$ _'変数を使用することはできません。ちょうど 'OperatingSystem'を使用してください。そして、あなたはカッコ内の式の代わりに文字列にする必要があると思います。 https://docs.microsoft.com/en-us/powershell/module/addsadministration/get-adcomputer – Swonkie

答えて

0

それとも、このようにそれを行うだけで...私はあなたがあなたのポストに基づいて行うようにしようとしていたと仮定しています

Clear-Host;'6.3 (9600)','10.0 (14393)' | %{Get-ADComputer -Filter * -Properties OperatingSystem,OperatingSystemVersion | Where OperatingSystemVersion -EQ $_ | Select Name,OperatingSystem,OperatingSystemVersion} 

Results --- 

Name OperatingSystem    OperatingSystemVersion 
----   ---------------     ---------------------- 
DC01 Windows Server 2012 R2 Standard 6.3 (9600)    
...   
...    
...   
IIS01 Windows Server 2016 Datacenter 10.0 (14393) 

0

使用フィルタとforeachの

$OSVersion = @("10.0 (10240)", "10.0 (10586)") 
Foreach($version in $OSVersion){ 
Get-ADComputer -Filter {OperatingSystem -match $Version} -Property OperatingSystem,OperatingSystemVersion | Select-object Name,OperatingSystem,OperatingSystemVersion | Export-Csv 'C:\SomePath.csv' 
} 
関連する問題