PowerShell を使用してリモート コンピューターからサービス ステータスを取得する

Migel Hewage Nimesha 2024年2月15日
PowerShell を使用してリモート コンピューターからサービス ステータスを取得する

この記事では、リモート コンピューターへの接続、そのサービスへのアクセス、および PowerShell を使用したサービスの状態について説明します。

PowerShell を使用してリモート コンピューターからサービス ステータスを取得する

リモート コンピュータに接続してそのサービスにアクセスするには、さまざまな方法があります。 Windows PowerShell は、Get-WmiObject コマンドレットによってこれを容易にします。

リモート コンピューター上のリソースを簡単に管理するために使用できます。 Get-WmiObject コマンドを WMI クラス名で実行して、ローカル コンピューター サービスにアクセスできます。

このコマンドは、デフォルトでローカル マシンに対して実行されます。

Get-WmiObject Win32_Bus

出力:

ローカル コンピューター サービスへのアクセス

Get-WmiObject コマンドレットは、リモート コンピューターを指定する -ComputerName パラメーターを提供します。 リモート マシンの NetBIOS 名または IP アドレスを指定できます。

一部のシナリオでは、完全修飾ドメイン名も提供する必要がある場合があります。 このパラメーターは、Windows PowerShell リモート処理メカニズムに依存しません。

したがって、WS-Management プロトコルに依存しません。 ユーザーは、自分のコンピューターが WM-Management リモート コマンドを実行するように構成されているかどうかについて心配する必要はありません。

Get-WmiObject -Class Win32_Bus -ComputerName 100.34.35.10

これにより、100.34.35.10 IP アドレスで識別されるリモート コンピューターに接続され、Win32_Bus リソース情報が取得されます。

一部のシナリオでは、リモート ホストに接続するためにユーザー名とパスワードを指定する必要があります。 Get-WmiObject コマンドレットには、リモート マシンへのログイン情報を指定する -Credential パラメーターがあります。

-Credential パラメーターに引数を渡す方法は 2つあります。

  1. ユーザー名を入力してください
  2. PsCredential オブジェクトを提供する

ユーザー名を入力してください

以下に示すように、Get-WmiObject コマンドレットの -Credential パラメーターは、ユーザー名またはユーザー アカウント名のみをテキストとして受け入れます。

Get-WmiObject Win32_Service -Credential user001 -ComputerName 100.43.10.11

このコマンドは、100.43.10.11 IP アドレスで識別されるホストへの接続を試みます。 接続は、指定されたユーザー名 (user001) をログ ユーザーとして使用します。

このコマンドは、ユーザーにパスワードの入力を求めるプロンプトを出します。 正しいパスワードが提供されると、接続が確立され、Win32_Service WMI インスタンスの情報が取得されます。

PSCredential オブジェクトを提供する

Get-WmiObject コマンドレットの -Credential パラメーターは、PSCredential オブジェクトを引数として受け入れます。 これは、資格情報を任意のコマンドに渡すための非常に安全な方法です。

以下に示すように、PSCredential オブジェクトを簡単に作成できます。

$credentialObj = Get-Credential

Get-Credential コマンドレットは PSCredential オブジェクトを返し、$credentialObj 変数に格納します。 上記のコマンドを Windows PowerShell で実行すると、このオブジェクトのユーザー名とパスワードの値を入力するダイアログが表示されます。

ダイアログ ボックスにユーザー名とパスワードを入力

以下のようにユーザー名とパスワードを入力しましょう。

ユーザー名とパスワードを入力

ユーザー名: user01

パスワード: user01

$credentialObj に格納されている値を確認してみましょう。

$credentialObj

出力:

$credentialObj 値

Usernameuser01 として表示でき、Password は PowerShell SecureString です。 パスワードをプレーンテキスト形式で保存することはお勧めしません。

したがって、PSCredential オブジェクトは、より安全な SecureString としてパスワードを保存します。

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

関連記事 - PowerShell Service