2017-11-13 8 views
0

ADですべてのEoL Windowsコンピュータを取得するスクリプトを作成する必要があります。PowershellですべてのEoL WindowsコンピュータをADで取得する

これが今の私のコードです:

$getad = Get-ADComputer -Filter { 
OperatingSystem -like "Windows 10*" 
-or 
OperatingSystem -like "*Windows Vista*" 
-or 
OperatingSystem -like "*Windows XP*" 
-or 
OperatingSystem -like "*95*" 
-or 
OperatingSystem -like "*94*"  
-or  
OperatingSystem -like "*Windows 8*"  
-or   
OperatingSystem -like "*Windows 8.1*" 
-or   
OperatingSystem -like "*2000 Professional*"   
-or    
OperatingSystem -like "*2000 Server*"   
-or   
OperatingSystem -like "*2003*"    
-or    
OperatingSystem -like "*Windows NT*"    
-or   
OperatingSystem -like "*Windows 7*"    
-and 
#Windows8   
OperatingSystemVersion -notlike "*6.3.9600*"   
-and 
#Windows7 SP1    
OperatingSystemVersion -notlike "*6.1.7601*"    
-and 
#Windows10    
OperatingSystemVersion -notlike "*16299*" 
-and 
#Windows10     
OperatingSystemVersion -notlike "*14393*"     
-and 
#Windows10     
OperatingSystemVersion -notlike "*15063*"     
} -Properties ('Name', 'operatingsystem', 'DistinguishedName', 
'description', 'lastlogondate', 'OperatingsystemVersion') 
$selectobj = $getad | Select-Object Name, Operatingsystem, 
DistinguishedName, Description, Lastlogondate, OperatingSystemVersion 
$selectobj 

問題:-notlikeとの一部が適用されません。私は見たくないバージョンのコンピュータを手に入れます。

私はすべてのEoLコンピュータを1つの変数に入れておく必要があります。

答えて

0

私は追加(と)今では動作します。

$getad = Get-ADComputer -Filter {(operatingsystem -like "*Windows 10*" -and OperatingSystemVersion -notlike "*16299*" -and OperatingSystemVersion -notlike "*14393*" -and OperatingSystemVersion -notlike "*15063*") -or (operatingsystem -like "*Windows Vista*") -or (operatingsystem -like "*Windows XP*") -or (operatingsystem -like "*95*") -or (operatingsystem -like "*94*") -or (operatingsystem -like "*Windows 8*" -and OperatingSystemVersion -notlike "*9600*") -or (operatingsystem -like "*2000 Professional*") -or (operatingsystem -like "*2000 Server*") -or (operatingsystem -like "*2003*") -or (operatingsystem -like "*Windows NT*") -or (operatingsystem -like "*Windows 7*" -and OperatingSystemVersion -notlike "*7601*")} -Properties ('Name', 'operatingsystem', 'DistinguishedName', 'description', 'lastlogondate', 'OperatingsystemVersion', 'Created', 'Enabled', 'SamAccountName') 

$selectobj = $getad | Select-Object Name, Operatingsystem, DistinguishedName, Description, Lastlogondate, OperatingSystemVersion, Created, Enabled, SamAccountName 

これは機能しますが、その長さのためにまったくうまくありません。 他の方法はありますか?

0

orandの組み合わせのロジックの問題ですが、-like-notlikeを使用しないと、考えられないように動作します。正規表現は、このような-imatch-inotmatchを切り替えて使用します。

OperatingSystem -imatch "Windows 10|Windows Vista|Windows XP|95|94|Windows 8|2000|2003|Windows NT|Windows 7" 
-and OperatingSystemVersion -inotmatch "6.3.9600|6.1.7601|16299|14393" 
+0

-likeの代わりに-imatchを使用すると、エラーが発生します。私は私のようなものとノットの部分を-imatchと-inotmatchに置き換えました。しかし、今私はエラーが表示されます: 'Operator Not supported:-imatch' – Dragonball2211

関連する問題