0

PowerShell バージョン 2.0 (Windows Server 2008) を使用して、リモート マシンで apache および mysql サービスを開始/停止したいと考えています。リモート実行の構文は次のとおりです。

(Get-WmiObject -Computer myCompName Win32_Service -Filter "Name='myServiceName'").InvokeMethod("Stop-Service",$null)

ただし、この実行にも資格情報 (DOMAIN_NAME\USERNANE および PASSWORD) を提供する必要があります。私はpowershellを初めて使用し、正しい構文について助けが必要です(例は理解しやすく、実装が簡単です)。

4

1 に答える 1

3

Get-WMIObjectパラメータを受け入れ-Credentialます。スクリプト内で資格情報をプレーン テキストのままにしておくべきではないため、プロンプトを表示する必要があります。

$creds = get-credential;
(Get-WmiObject -Computer myCompName Win32_Service -Filter "Name='myServiceName'" -credential $creds).InvokeMethod("Stop-Service",$null)

リモート システムで PSRemoting を有効にしている場合は、WMI を使用せずにこれを行うことができます。

$creds = get-credential;
Invoke-Command -computername myCompName -credential $creds -scriptblock {(get-service -name myServiceName).Stop()};

コメントに基づいて更新

これはスケジュールされたジョブとして実行しているため、資格情報を保存したり、プロンプトを表示したりする必要はまったくありません。必要なユーザー アカウントで実行するように (スケジュールされたタスクを介して) スケジュールされたジョブ自体を構成すると、次のいずれかが機能するはずです。

# Your original code
(Get-WmiObject -Computer myCompName Win32_Service -Filter "Name='myServiceName'").InvokeMethod("Stop-Service",$null)
# If you have remoting enabled
Invoke-Command -computername myCompName -scriptblock {(get-service -name myServiceName).Stop()};
于 2013-09-05T13:21:26.927 に答える