2017-10-31 16 views
1

複数のOSバージョン(例6.1、5.1など)を確認するスクリプトを作成しようとしていて、コンピュータがADで 'Enabled = True'の場合はスクリプトを作成しようとしています。それはExcelリストの中のプロパティと共にコンピュータリスト全体を返します。Powershellの条件付き演算子

OSのバージョンを確認するために単一の条件だけを使用している場合、スクリプトは正常に動作します。細かい実行するスクリプトは次のとおりです - 私は、スクリプトが空白のExcelシートを返す複数のOSのバージョンを確認するために「と」条件を使用していたときしかし、問題がある

import-module ac* 

Get-ADComputer -filter { OperatingSystemVersion -Like '*6.1*' -and Enabled -eq "true"} -SearchBase 'OU=MIComputers,OU=MI,dc=imaje,dc=intra' -Properties '*' | Select Name,OperatingSystem,Status, OperatingSystemVersion, ` 
LastLogonDate,CanonicalName | Export-Csv -NoType "C:\Temp\B2.csv" -Encoding UTF8 

import-module ac* 

Get-ADComputer -filter { OperatingSystemVersion -Like '*6.1*' -and OperatingSystemVersion -Like '*5.1*' -and Enabled -eq "true"} -SearchBase 'OU=MIComputers,OU=MI,dc=imaje,dc=intra' -Properties '*' | Select Name,OperatingSystem,Status, OperatingSystemVersion, ` 
LastLogonDate,CanonicalName | Export-Csv -NoType "C:\Temp\B2.csv" -Encoding UTF8 

誰でも私がここで間違っていることを指摘してください。これはどのように修正できますか?

答えて

4

「OperatingsystemVersion」と同じ条件を2回使用することはできません。

同じコンピュータオブジェクトに対して5.1と6.1の両方を検索すると、結果は表示されません。

import-module ac* 

Get-ADComputer -filter { OperatingSystemVersion -Like '*6.1*' -OR OperatingSystemVersion -Like '*5.1*' -and Enabled -eq "true"} -SearchBase 'OU=MIComputers,OU=MI,dc=imaje,dc=intra' -Properties '*' | Select Name,OperatingSystem,Status, OperatingSystemVersion, ` 
LastLogonDate,CanonicalName | Export-Csv -NoType "C:\Temp\B2.csv" -Encoding UTF8 
+0

ポインタに感謝します。スクリプトは正常に動作します。また、私はクエリを持っていた。スクリプトの実行には20分以上かかります。これはADのマシンの数のためか、スクリプトを最適化できますか? –

+0

はい、そうかもしれません。変数に検索を割り当ててから、Countメソッドを使用してレコード数を確認することができます。 $ a = Get-ADComputer -Filter {OperatingSystemVersion -Like '6.1' - またはOperatingSystemVersion -Like '5.1' - およびEnabled -eq "true"} -SearchBase "OU = EUD_DB7、DC = db、DC = demo" $ a.count –

+0

一般的に、@AvikChowdhuryはできるだけ早く左にフィルターをかけたいと思っています。あなたはこのコードでそれをやっています。しかし、検索自体は*長い*時間がかかります*。 6.1や5.1などのOSを持つすべてのコンピュータを探しています。これはワイルドカード検索を意味します。それはしばらく時間がかかるだろう。 – FoxDeploy