2017-12-22 22 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

foreach는. '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

를 사용하여 필터와 그 맥락에서`$ _` 변수를 사용할 수 없습니다

$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' 
}