Windows
在多台電腦上更新任務計劃程序作業密碼
這是交易:公司的政策是每 180 天更新一次服務帳戶密碼。問題是,我在大約 20 台伺服器上使用這些服務帳戶,執行各種工作 - 所以每 180 天,我必須花費大約 4 個小時來更新它們(如果不是 KeepassXC 的自動輸入,我需要 2 天,得愛 RDP 到 DC 半個世界)。
必須有更好的方法,但它會是什麼?
我們談論的是 W2k12r2。
您應該能夠使用一點 PowerShell 來完成此操作。本文提供了一種快速簡便的方法來更新計劃任務憑據 下面的程式碼取自https://nointerrupts.com/2018/10/18/update-scheduled-task-password-with-powershell/。
$TaskCredential = Get-Credential Get-ScheduledTask | Where-Object { $_.Principal.UserId -eq $TaskCredential.UserName } | Set-ScheduledTask -User $TaskCredential.UserName -Password $TaskCredential.GetNetworkCredential().Password
要在多台機器上遠端執行更新,請將以下內容保存為 Set-
ScheduledTaskCredentials.ps1
。注意:您需要在所有伺服器上設置 WinRM 才能正常工作
Param( [Parameter(Mandatory=$true,ValueFromPipeline=$true)][string[]]$ComputerName, [Parameter(Mandatory=$true)][PSCredential]$Credential, [Parameter(Mandatory=$true)][PSCredential]$TaskCredential ) Invoke-Command -ComputerName $ComputerName -Credential $Credential -ScriptBlock { Get-ScheduledTask | Where-Object { $_.Principal.UserId -eq ($using:TaskCredential).UserName.Split('\')[1] } | Set-ScheduledTask -User ($using:TaskCredential).UserName -Password ($using:TaskCredential).GetNetworkCredential().Password }
然後你應該能夠像這樣執行它。
$AdminCredential = Get-Credential # Supply the admin credentials for remote access $TaskCredential = Get-Credential # Supply the new credentials for the service account .\Set-ScheduledTaskCredentials.ps1 -ComputerName server1.example.com,server2.example.com -TaskCredential $TaskCredential -Credential $AdminCredential