リモートVM上のサービスのログインユーザーを変更するためのPowerShellスクリプトを作成しました。私はそれを実行するときに動作します。私は私の同僚にそれを送信したときただし、スクリプトはエラーなしで実行し、彼らはそれはまだ「ローカルアカウント」として記載されているチェックしていることが表示されます。PowerShellスクリプトを使用してWindowsサービスを変更する
$account = Read-Host "Please admin account Name"
$password = Read-Host -AsSecureString "Please enter your password"
$password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($password))
$service = Read-Host "Enter service name"
$computers = Get-Content -Path ".\servers.txt"
foreach ($computer in $computers) {
$svc = gwmi Win32_Service -ComputerName $computer -Filter "name='$service'"
$svc.StopService()
$svc.Change($null,$null,$null,$null,$null,$null,$account,$password,$null,$null,$null)
$svc.StartService()
}
Write-Host $service "is now running as" $account
Read-Host
エラーの内容を知ることは非常に役に立ちます。良い出発点は、あなたのコードと同じディレクトリにservers.txtというテキストファイルがあるのでしょうか? PowerShellの実行ポリシーでリモートコードを実行できますか?また、パスワードを入力する必要があります。代わりに 'Get-Credential'を使うべきです。もっと安全です。 – FoxDeploy
私は '$ \ computer.txt'を見つけられず、何もしないと決めたので、' $ computer'を出力しました。 server.txtの – Filburt
は、VMが更新するservers.txtファイルからVMの名前を読み取ります。提供されているエラーメッセージはありませんが、問題はなく実行されたように見えますが、指定されたVMでは変更が加えられていません。 –