PowerShellについてはすでに多くのことを学びました。 Wmiを使用した前回の作業:初心者のためのPowerShell(パート9):PowerShellとWMIを使用したWindowsからのすべての取得さて、私の意見では、「PowerShellを使用したフィルタリング」というトピックに焦点を当てるのが最適な時期です。 しかし、最初に、最後の部分から運動を見てみましょう。
シリーズのすべての部分はここで見つけることができます: PowerShell For Beginners(Series)
Review(Part9)
ここでは、パート9の課題と解決策を示します。
ハードディスクに関する情報を取得します。 Get-WmiObjectまたはGet-CimInstanceを使用します。 まず、WMIオブジェクトを検索し、見つかったら、名前、パーティション、モデル、ファームウェア、シリアル番号を表示します。
まず、WMIインスタンス名を調べる必要があります。 タスクはハードディスクを参照しているため、たとえば*disk*を検索できます。p>
Get-WmiObject *disk* -List
Win32_Diskdriveは良い音。 PowerShellの詳細を取得するためのパート8の2つのステップの方法を覚えておいてください。
Get-CimInstance win32_diskdrive | Get-Member
そこに適切な属性があります。 ここで、Select-Objectを使用してすべてを取得します。p>
Get-CimInstance Win32_DiskDrive | Select-Object Name,Partitions, Size,Model,FirmwareRevision,SerialNumber
レビュー
WMI(Windows Management Instruments)は、ほぼすべてのWindows設定への読み取りおよび書き込みアクセスを提供します。 Get-WmiObjectとGet-CimInstanceの二つの重要なコマンドレットがあります。
なぜフィルタリングするのですか?
フィルタリングはPowerShellの重要な技術です。 フィルタリングの方法がわかったら、PowerShellからさらに多くの情報を得ることができます。さて、この部分の私の仕事は、フィルタリングが重要である理由を説明することです。
さて、あなたは複数のハードディスクを持っているとしましょう。 上記の出力は、すべてのハードディスクを示しています。 しかし、たとえば、サムスンのハードディスクだけを表示したいとします。
なぜこれをしたいのですか? たぶん、あなたの上司は、使用中のサムスンのディスクの数を尋ねます。 すべてのコンピュータ上で。 WMIとPowerShellを使用すると、リモートクエリを実行できます。 Okトピックに戻ります。 私たちは500GBのSamsung SSDのみを必要としています。 フィルタパラメータを見て!p>
Get-CimInstance Win32_DiskDrive -Filter "Model='Samsung SSD 850 EVO 500GB'" | Select-Object Name,Partitions, Size,Model,FirmwareRevision,SerialNumber
以下は、普通の、より高度なPowerShellオタクのために少しですが、なぜですか? 次のコマンドは、すべてのドメインコンピュータからすべてのSamsung Ssdを取得しますが、サーバーからは取得しません。p>
Get-CimInstance Win32_DiskDrive -Filter "Model='Samsung SSD 850 EVO 500GB'" -ComputerName (Get-ADComputer -Filter {operatingsystem -notlike '*server*'}).Name | Select-Object Name,Partitions, Size,Model,FirmwareRevision,SerialNumber
あなたの同僚は、あなたが解決できない問題に直面していると思う場合は、単にボタンを押して、あなたが何ができるかを示しています。 😉
わかりました、初心者のための例に行きましょう。
オブジェクトのフィルタリング
Get-ChildItemコマンドを覚えていますか? 私はこのシリーズでこのコマンドを非常に頻繁に使用しました。
Get-Help Get-ChildItemを実行すると、ヘルプに多くのフィルタリング例があります。p>
Get-Help Get-ChildItem -Online
私はローカルヘルプを使用することを好みます。p>
Get-Help Get-ChildItem -Examples
これまでに何を学んだのですか?
フィルタリングはPowerShellの重要な技術です。 フィルタリングの方法を理解したら、PowerShellからさらに多くの情報を得ることができます。
Active Directoryオブジェクトのフィルタリング
ITプロの場合は、おそらくActive Directory環境で作業しています。 フィルタリングは、Active Directoryオブジェクトを操作する際の重要な手法です。
次のコマンドは、Filterパラメーターを使用して、無効になっているすべてのユーザーを取得します。
Get-ADUser -Filter {enabled -eq 'false'} | Select-Object Name
フィルタパラメータ
周りを見てみましょう。 Filterパラメーターを使用するコマンドはどれですか? 私はドメインコントローラ上にいることに注意してください。ご覧のとおり、filterパラメータは主にActive Directoryコマンドで使用されています。 そして、私は常にactive Directoryのためだけにfilterパラメータを使用してきたことを認めなければなりません。 それはそれがある方法です。 それでは、Active Directoryに集中しましょう。 すべてのドメインコンピュータ(サーバーオペレーティングシステムとクライアントオペレーテ このためには、*でfilterパラメータを使用する必要があります。p>
Get-ADComputer -Filter * -Properties Name,Operatingsystem,OperatingSystemVersion,IPv4Address | Sort-Object OperatingSystem | Select-Object Name,OperatingSystem
フィルタリングの面では、これは簡単な作業でした。
フィルタリング方法
今、私たちは、Windows10がインストールされているすべてのコンピュータを取得しようとします。 このためには、filterパラメータを湾曲した括弧に入れなければなりません。p>
Get-ADComputer -Filter {operatingsystem -like '*windows 10*'}
詳細を分解する時が来ました。
ブラケット
フィルターを湾曲したブラケットに入れます。
属性
次に、プロパティ(属性)名を見つけます。 初心者のためのPowerShell(パート8):PowerShellのパワー–オブジェクトとの接触(Get-Member、Select-Object)。 二つのステップの方法を覚えています!p>
Get-ADComputer client01 -Properties * | Get-Member
サイドノート:プロパティパラメータに注意してください。 Active Directoryでは、既定ですべてのプロパティが表示されるわけではありません。
演算子
次に演算子を使用します。
演算子は-like、-as、-equal、-neなどになります…パラメータの詳細については、タイプ
help about_operators
これは、コンピュータに保存されているテキス
ステートメント
何かをフィルタリングしたい場合は、条件が必要です。 この条件は引用符で囲む必要があります。
レビュー
フィルタを使用している場合は、最初にヘルプセクションを参照してください。 フィルタは、通常、括弧内に配置されます。 多くの場合、演算子も使用されます。
いくつかのより多くのフィルタの例…あまり話をせずに…
悪いパスワード数が0のユーザーを検索します。 Petraのアカウントの例は次のとおりです。
Get-ADUser -Filter {badpwdcount -eq '0'} | Select-Object Name
パスワードカウントが0で有効になっているユーザーを検索します。 (Petraが有効になっていないことがわかります)。p>
Get-ADUser -Filter {(badpwdcount -eq '0') -and (enabled -eq 'true')} | Select-Object Name
すべてのWindows Serverドメインコンピューターを表示しますが、Windows Server2016を実行しており、名前がDCで始まるコンピューターのみを表示します。
Get-ADComputer -Filter {(operatingsystem -like '*2016*') -and (name -like 'dc*')}
Where-Objectを使用したフィルタリング
Where-Objectは常にパイプの右側にあります。 左のフィルタリング。 それが何を意味するのか、ポストの最後に長所と短所。 この部分では、Where-Objectに集中します。PowerShellヘルプのいくつかの例を次に示します。しかし、私は私の貢献の一つからの例を使用したいと思います。
Get-Process | Where-Object {$_.handles -gt 200 -and $_.name -eq "svchost"}
Get-ChildItem c:\scripts | Where-Object {$_.length -gt 100000}
しかし、私は私の貢献の一つからの例を使用したいと思p>
Get-Hotfix | Where-Object HotfixID -like KB31*
HotFixIDに注意してください。 属性を参照します。
推奨される手順は、下位互換性のために次のようになります。
Get-Hotfix | Where-Object {$_.HotfixID -like 'KB31*'}
今何か新しいことがあります。 $_の意味は何ですか?
$_は、前の(パイプ)から渡された各オブジェクト/要素を反復処理する変数です。 簡単に言えば、パイプから来るすべてのオブジェクトからhotfixIDを取得します。
フィルタリングとWhere-Object
フィルタが使用できない場合は、Where-Objectを使用します。 あなたはパイプの左側にフィルタを使用することができる場合は、それを使用してください! どうして? まあ、パイプを介して1000個のオブジェクトを送信するのか、500個だけを送信するのかは違いです。Where-Objectすべてのオブジェクトがパイプを通過しなければならず、その後のみフィルタリングされます。 パート7のパイプを覚えておいてください:初心者のためのPowerShell(パート7):パイプ(および多くの例で遊ぶ)
Review
Where-Objectは常にパイプの右側にあります。 左のフィルタリング。 パイプの左側にあるフィルターか、右側にあるWhere-Objectのどちらかを選択できる場合は、左側を選択します。ここでは、次の部分までの運動です。
運動
ここでは、次の部分までの運動です。
Where-Object:
実行中のサービスのみを表示するには、Get-ServiceとWhere-Objectを使用します。
Filter(Active Directory必須):
Filterパラメーターを使用して、無効になっているすべてのユーザーを取得します。
トピックで次回を参照してください:初心者のためのPowerShell(パート11):PowerShellドライブを楽しんでいる
Patrick Gruenauer、MVP PowerShell