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つあります。
- ユーザー名を入力してください
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
出力:
Username
は user01
として表示でき、Password
は PowerShell SecureString
です。 パスワードをプレーンテキスト形式で保存することはお勧めしません。
したがって、PSCredential
オブジェクトは、より安全な SecureString
としてパスワードを保存します。
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.