初心者のためのPowerShell(パート7):パイプ(と一緒に遊ぶために多くの例)

初心者のための第六部PowerShell(パート6):PowerShellプロファイルとISEの後,私たちは、パイプの周りのトピ しかし、私たちはこの第六の演習の答えを見てみましょう前に。 また、パート6でこれまでに学んだことを簡単にレビューします。

レビュー(その6)

演習

ISEを開きます。 すべてのユーザーのPowerShellプロファイルを作成します。 最初の行にコマンドStart-Transcriptを挿入します。 ファイルを保存します。 PowerShellを開きます。 すべてのユーザーに何が起こったのですか?

これは非常に良い練習でした。 いくつかの自己賞賛;-)。 私は二つのことを和解させることができました。 ISEとの作業と新しいコマンドの導入:Start-Transcript. さて、すべてのユーザーのPowerShellプロファイルの作成から始めましょう。 最後の部分で説明したように、すべてのユーザーパスを指定する必要があります。

New-Item $profile.AllUsersAllHosts -Force

アンベナント・・・・・・・・・PNG

次に、作成したプロファイルを開く必要があります。 私はメモ帳をお勧めします。 開いたら、「Start-Transcript」と入力し、「Save」をクリックします。

PNG

今、魔法の瞬間が来ます。 メモ帳とISEを閉じてPowerShellを開きます。 あなたが見ることができるようにPowerShellは今記録されています。 スタート-トランスクリプトは、すべての入力を記録します。

PNG

今、それをテストするのはあなた次第です。 いくつかのコマンドを入力し、トランスクリプトファイルを開きます。 ファイルの場所は、ドキュメントフォルダ内のユーザープロファイルにあります(スクリーンショットに示すように)。

概要

起動時にpowershellに何かをさせたい場合は、PowerShellプロファイルファイルを作成します。 実行ポリシーに注意してください。 PowerShell ISEは、スクリプトを作成するのに役立つ強力なスクリプトエディタです。

PowerShellパイプ

さて、次の部分に来ます。 パイプでの作業。 そして、これはシリーズの重要な部分です。 飛び込みましょう

Windows PowerShellパイプラインを使用すると、複数のステートメントをパイプシンボルで結合できます。 PowerShellでは、パイプを操作することが重要な手法です。 これは、他のPowerShellコマンドへのオブジェクト転送の一種と考えることができます。 具体的には、パイプはパイプの左側にあるすべてのものを取り、パイプの右側のコマンドに転送します。

まず、パイプ記号はキーボードにあります。 あなたはここでほとんどのキーボードでそれを見つけることができます:

アンベナント・・・・・・・・・JPG

だから、今の目標は、あなたに例を与えるためにパイプと二つのコマンドを組み合わせることです。

レビュー

パイプを操作することは、PowerShellの重要なテクニックです。 具体的には、パイプはパイプの左側にあるすべてのものを取り、パイプの右側のコマンドに転送します。

例:プロセス停止プロセス

多くのお客さまも多いかと思いますがい”こんにちは、敵ですが何ですか?”今、私はあなたに簡単な例でパイプの力をお見せするつもりです。 すべてのメモ帳とペイントプロセスを閉じたいとしましょう。 それでは、それらすべてをキャッチし、停止プロセスにそれらをパイプしてみましょう。

だが、ちょっと待って。 始める前に、コマンドを別々に見てみましょう。 私のコンピュータには、2つのメモ帳プロセスと2つのペイントプロセスがあります。

PNG

つまり、Get-Processはすべてのメモ帳とすべてのペイントプロセスをキャッチします。 覚えておいてください:パイプは、パイプの左側にあるすべてを取り、パイプの右側にあるコマンドに転送します。

したがって、パイプの左側にGet-Processを置き、パイプの右側にStop-Processを置くと、このプロセスはすべて停止する必要があります。

Get-Process notepad,mspaint | Stop-Process

彼らはすべてなくなっています。 また、コマンドの最後に-verboseを指定すると、すべてのプロセスがすぐに停止し、すべてのプロセスが異なるプロセスidを持っていることがわかります。

PNG

パイプJPG

いくつかのより多くの例で再生するには…

サービスの停止…

Get-Service spool*,*bits* | Stop-Service -Verbose

アンベナント・・・・・・・・・JPG

Out-GridViewできれいなビューでシステムログから最新の5つのイベントログを表示します。

Get-EventLog -LogName system -Newest 5 | Out-GridView

アンベナント・・・・・・・・・JPG

Windowsセットアップログの閲覧(以下の場所にあります)C:\Windows\Pantherインストール中に最初に成功したブートエントリを検索します。

Get-ChildItem C:\Windows\Panther | Select-String 'First Boot'

アンベナント・・・・・・・・・JPG

ユニークなエントリを検索する…

Get-Content C:\Temp\file1.txt | Get-Unique

アンベナント・・・・・・・・・JPG

または何かを数える…

Get-Content -Path C:\Temp\file1.txt | Get-Unique | Measure-Object

2.JPG

より具体的には:

Get-Content -Path C:\Temp\file1.txt | Get-Unique | Measure-Object | Select-Object Count

アンベナント・・・・・・・・・JPG

それ以上の部分については、私は三つのコマンドに集中します。 それらのすべては、書式設定とパイプの使用に関係しており、初心者には完全に適しています。 先に進みましょう。

これまでに何を学んだのですか?

パイプは、パイプの左側にあるすべてを取り、パイプの右側にあるコマンドに転送します。

Format-Table、Format-List、およびFormat-Wideへのパイプ

Format-Table

Format-Tableコマンドレットは、コマンドの出力をフォーマットします。 そしてそれは管と使用しました。

以下のコマンドを見てください。 それはあなたにテーブルを示しています。 テーブルヘッダーは、Mode、LastWriteTime、Length、およびNameです。

png

このテーブルは事前定義されています。 しかしよいニュースは私達が私達の必要性に合うためにテーブルを変更してもいいことである。 テーブルヘッダーに注意してください。 彼らは名前を持っています。 そして、この名前は私たちにとって非常に重要です。 どのようにそれが好きですか:

Get-ChildItem | Format-Table Name,LastWriteTime

アンベナント・・・・・・・・・PNG

あなたが知る必要があるのはヘッダーテーブル名だけです。 次に、Format-Tableで出力を再配置するか、単純に物事を省略することができます。

私はあなたに別の例を与えてみましょう。 Get-ServiceすべてのWindowsサービスを表示します。 だろ?

PNG

しかし、私はこのビューが好きではありません。 私はステータスと名前だけが必要です。 これは簡単な作業です。 単にそれをFormat-Tableにパイプし、ステータスと名前を提供します。

Get-Service | Format-Table Status,Name

アンベナント・・・・・・・・・PNG

Microsoft DocsのFormat-Tableについての詳細:

https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Format-Table?view=powershell-5.1

Format-List

デフォルトの出力は、コマンドによって事前設定されています。 いくつかのコマンドはあまりにも多くの情報を出力し、それがテーブルとしてではなくリストとして表示される理由です。 Get-NetIPConfigurationはそのようなコマンドです。

PNG

リストヘッダーがわかりました。 このコマンドをFormat-Listにパイプして、Ipv6AddressとIpv4Addressのみを選択しましょう。

Get-NetIPConfiguration | Format-List IPv4Address,IPv6Address

アンベナント・・・・・・・・・PNG

素敵です。 括弧に気を取られてはいけません。 バックグラウンドでは、IPアドレスを取得するWMIアクションが開始されます。 それは括弧が何のためのものです。

Get-ChildItemの出力をリストにフォーマットすることもできます。

Get-ChildItem | Format-List Name,LastWriteTime

アンベナント・・・・・・・・・PNG

フォーマットについての詳細-リストはこちら:

https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Format-List?view=powershell-5.1

フォーマットワイド

最後ですが、今日の最後のコマンドではありません。 これはFormat-Wideと呼ばれ、名前はそれが何をするかを教えてくれます:ワイド形式で何かをフォーマットします。

PNG

Microsoft Docsをフォーマットワイドにする:

https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Format-Wide?view=powershell-5.1

レビュー

Format-Table、Format-List、およびFormat-Wideは、コマンドの出力を調整します。 パイプでそれを使用してください。

Format-Table,Format-List,Format-Wide in Advanced Mode

これでこの記事は終わりではありません。 今、私はあなたに書式設定についていくつかの興味深いと便利なものをお見せするつもりです。 それは私の最も有用な書式設定パラメータの小さなコレクションです。

Format-Table-Autosize

パラメータは、データの幅に基づいて列のサイズを調整します。

Get-ChildItem C:\Temp | Format-Table -AutoSize

アンベナント・・・・・・・・・Png

Format-Table-Wrap

列幅を超えるテキストを表示します。 既定では、列の幅を超えるテキストは切り捨てられます。

Get-EventLog -LogName Security -Newest 2 | Format-Table -Wrap

アンベナント・・・・・・・・・PNG

Format-Wide-Column

列の数を指定します。

Get-ChildItem | Format-Wide -Column 3

アンベナント・・・・・・・・・PNG

いくつかの例…Active Directory(サイドノート)

Active Directoryを使用している場合は、formatコマンドを使用してユーザーを表示することもできます。 ドメインコントローラーにログインし、PowerShellを起動します。 ここにいくつかの例があります:

Get-AdUser administrator -Properties * | Format-Table CN,Enabled,LastLogonDate,SID -AutoSize -Wrap

1.JPG

Format-Tableは、いくつかのプロパティでのみ意味があります。 より多くを一覧表示するには、Format-Listを使用します:

Get-ADUser administrator -Properties * | Format-List CN,Enabled,LastLogonDate,SID,Created,ProfilePath,ScriptPath,LockedOut

アンベナント・・・・・・・・・JPG

またはFilter*パラメータを持つすべてのユーザーに対して行います。

Get-ADUser -Filter * -Properties * | Format-Table CN,Enabled,LastLogonDate,SID -AutoSize -Wrap

アンベナント・・・・・・・・・JPG

映画”ポンピング-アイアン”の有名人との類似点は純粋に偶然です。

運動

それは今日のためです。 ここでは、次の部分までの運動です。

Get-Hotfixを実行します。 修正プログラムの番号(KB)とインストール日のみを一覧形式で表示します。

解決策は次の部分で見つけることができます。

次の記事でお会いしましょう:初心者のためのPowerShell(パート8):PowerShellのパワー–オブジェクトとの接触(Get-Member、Select-Object)

PATRICK Gruenauer、MVP PowerShell

コメントを残す

メールアドレスが公開されることはありません。