Get-WmiObject リモートコンピューター: PowerShellを使用してコンピューターのインベントリを取得する
PowerShellを使用してリモートコンピューターのインベントリを取得する方法は?答えはリモートコンピューターでGet-WmiObjectを使用することです。この記事では完全なチュートリアルを提供します。興味がある場合は、読み続けてください。
リモートでWMIに接続する方法は?
Windows Management Instrumentation (WMI)は、Windowsに組み込まれた管理インフラであり、管理および操作データのクエリに使用されます。実行中のプロセス、インストールされたソフトウェア、BIOS情報など、ローカルおよびリモートコンピュータから情報を取得するために使用することができます。
Get-WmiObjectコマンドレットは、WMIクラスのインスタンスまたは利用可能なWMIクラスに関する情報を取得します。ComputerNameパラメータを使用してリモートコンピュータを指定することで、リモートでWMIに接続することができます。
PowershellのGet-WmiObjectをリモートコンピュータで使用する方法
次に、PowershellのGet-WmiObjectをリモートコンピュータで使用してコンピュータの情報を取得する方法を見ていきましょう。
Queryパラメータが指定されている場合、コマンドレットはWMIクエリ言語(WQL)ステートメントを実行します。Listパラメータが指定されている場合、コマンドレットは指定された名前空間で利用可能なWMIクラスに関する情報を取得します。ComputerNameパラメータはコンピュータを指定するために使用されます。いくつかの例を見てみましょう。
まず、リモートコンピュータへのWMI接続をテストしてみましょう。以下の例は、PC1というリモートコンピュータに対するWMI接続をテストするためのものです。
- Get-WmiObject -query "SELECT * FROM Win32_OperatingSystem" -ComputerName PC1
また、PowerShellのWMIクラスWin32_Shareを使用してリモートマシンからネットワーク共有リストを列挙することもできます。ここでは、FTはFormat-Tableコマンドレットですが、リストビューで結果を表示するためにFLに変更することもできます。
- Get-WMIObject -ComputerName "PC1" -Query "SELECT * FROM Win32_Share" | FL
Win32_Shareクラスにフィルタを適用するためにSQLクエリのような構文を使用することもできます。以下のPowerShellスクリプトは、フィルタType=0を追加することでネットワーク共有フォルダのみをフィルタし、リストします。
- Get-WMIObject -ComputerName "PC1" -Query "SELECT * FROM Win32_Share Where Type=0" | FT
その他の例
Example 1:リモートコンピュータPC1上のサービスを取得します:
,上記のコンテンツを日本語に翻訳してください。翻訳するコンテンツは、HTMLのaタグのhref属性の値やimgタグのsrc属性の値は翻訳しないでください。{{}}内のコンテンツは翻訳の対象外です。Unicode文字は翻訳しないでください。HTMLの構造や属性は変更や修正しないでください。- Get-WmiObject -Class Win32_Service -ComputerName PC1
リモートコンピュータ上のサービスも取得するには、Get-WmiObjectリモートコンピュータCredentialを使用します。次の例では、Credentialパラメータを使用しています。Credentialパラメータの値はユーザーアカウント名です。ユーザーはパスワードを入力するように求められます。
- Get-WmiObjectWin32_Service -Credential FABRIKAM\administrator -ComputerName Fabrikam
例2: リモートコンピュータPC1でサービスを停止します:
- (Get-WmiObject -Class Win32_Service -Filter "name="WinRM"' -ComputerName PC1).StopService()
例3: リモートコンピュータPC1でBIOSを取得します:
- Get-WmiObject -Class Win32_Bios -ComputerName PC1 | Format-List -Property *
注
Get-WmiObjectコマンドレットはPowerShell 3.0でGet-CimInstanceに置き換えられました。次のコマンドは、最大から最小にカーネル時間を持つ各実行中のプロセス名を表示します:
- Get-CimInstance -Class Win32_Process -ComputerName DC1 | Select-Object -Property Name,KernelModeTime | Sort-Object KernelModeTime -Descending
AnyViewer: Windows向けのGUIリモートデスクトップソリューション
コンピュータ管理や操作データをより直接的にクエリする方法をお探しの場合は、強くAnyViewerをおすすめします。AnyViewerは無料のリモートデスクトッププログラムで、他のコンピュータからコンピュータをリモートで制御することができます。PowerShellと比較して、直感的で直接的な操作が可能なグラフィカルユーザーインターフェースを提供しています。
ステップ1. AnyViewerを両方のコンピュータにダウンロード、インストール、起動します。
ステップ2. ログインに移動し、サインアップをクリックします。(公式ウェブサイトで既にサインアップされている場合は、直接ログインできます。)
ステップ3. サインアップ情報を入力してください。
ステップ4. これによって、AnyViewerに正常にログインできることがわかります。デバイスは自動的に、ログインしたアカウントに割り当てられます。
ステップ5. 2つのデバイスで同じAnyViewerアカウントにログインし、ワンクリックコントロールをクリックして、アンアテンデッドリモートアクセスを実現してください。
✍注意: アカウントをプロフェッショナルまたはエンタープライズプランにアップグレードすると、以下のような追加の権限が得られます:
- アンアテンデッドリモートアクセスを実現するために、さらに多くのデバイスを割り当てることができます。
- より多くの接続履歴をいつでも表示できるように、現在接続中のデバイスが表示されます。
- リモートコンピュータをプライバシーモードで接続することができ、リモートコンピュータの画面をブラックアウトし、マウスとキーボードをブロックすることで、プライバシーをさらに保護できます。
ステップ6. リモートコンピュータの完全な操作権を手に入れた後、実際に使用しているかのように、任意のプログラムを開き、管理することができます。
要点
この投稿では、遠隔コンピュータ上で PowerShell の Get-WmiObject を使用してコンピュータ情報の在庫を作成する方法についての完全なチュートリアルを提供します。コンピュータ管理と操作データをより直感的な方法でクエリする場合は、AnyViewer を使用することをお勧めします。