第17章. PowerShellの利用範囲を広げる
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
17.0 はじめに
PowerShell環境は驚異的に包括的だ。システムを管理するのに役立つコマンドレット、タスクを自動化するための優れたスクリプト言語、そしてすでに知っているすべてのユーティリティやツールへのディレクトリが用意されている。
しかし、コマンドレット、スクリプト言語、既存のツールは、PowerShellを非常に包括的なものにしている一部でしかない。これらの機能に加えて、PowerShellはその能力を飛躍的に向上させる一握りの技術へのアクセスを提供する。.NET Framework、WMI、COMオートメーションオブジェクト、WindowsネイティブAPI呼び出しなどである。
PowerShellは、これらの技術にアクセスできるだけでなく、一貫した方法でアクセスできる。PowerShellオブジェクトのプロパティやメソッドを操作するテクニックは、.NETオブジェクトのプロパティやメソッドを操作するテクニックと同じである。また、これらのテクニックは、WMIオブジェクトやCOMオブジェクトを操作する際に使用するテクニックと同じである。
これらのテクニックやテクノロジーを使って仕事をすることは、C#などの.NETプログラミング言語での仕事に容易に移行できる知識という、もうひとつの大きな利点となる。
17.1 COMスクリプト・インタフェースを使ったプログラミングの自動化
問題
COMオートメーション・インタフェースを通じて、プログラミングやシステム・タスクを自動化したい。
解決策
COMオブジェクトをインスタンス化して操作するには、 コマンドレットの パラメータを使用する。New-Object -ComObject
$shell=New-Object-ComObject"Shell.Application"$shell.Windows()|Format-TableLocationName,LocationUrl
ディスカッション
WMIと同様に、COM自動化インタフェースは、長い間、スクリプティングとシステム管理のための標準ツールであった。アプリケーションが管理または自動化タスクを公開する場合、COMオブジェクトは(カスタムコマンドラインツールに次いで)2番目に一般的なインタフェースである。
PowerShellは、システム内の他のほとんどの管理オブジェクトを公開するように、COMオブジェクトを公開する。いったんCOMオブジェクトにアクセスできれば、PowerShellで他のオブジェクトのメソッドやプロパティを操作するのと同じように、そのプロパティやメソッドを操作できる。
注
COMオブジェクトの中には、正しく動作するためにマルチスレッド・アパートメント(MTA)と呼ばれる特殊な対話モードを必要とするものがある。MTAインタラクションを必要とするコンポーネントとのインタラクション方法については、レシピ13.12を参照のこと。
自動化タスクに加えて、多くのCOMオブジェクトは、VBScriptのような言語でのスクリプティング体験を向上させるために存在している。2つの例は、ファイルの操作と配列のソートである。
これらのCOMオブジェクトのほとんどは、PowerShellがより優れた代替オブジェクトを提供することが多いため、PowerShellでは時代遅れになる!多くの場合、PowerShellのコマンドレット、スクリプト言語、または.NET ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access