Установить агент для сброса паролей на виртуальную машину Windows Server
Чтобы сбрасывать пароли пользователей на виртуальных машинах Windows Server средствами Yandex Cloud, установите агент для сброса паролей и программу для обновления агента.
Примечание
Сейчас сбросить пароль средствами Yandex Cloud на виртуальной машине Linux невозможно.
Агент устанавливается с помощью программы для его обновления. Исходный код агента доступен на GitHub
Чтобы установить агент и настроить его автоматическое обновление:
-
Скачайте и настройте программу для обновления агента:
PowerShell-
Получите номер последней версии программы:
$YCAgentUpdaterBaseUri = "https://storage.yandexcloud.net/yandexcloud-guestagent-updater" $YCAgentUpdaterVersion = (Invoke-RestMethod "$YCAgentUpdaterBaseUri/release/stable").Trim()
-
Скачайте программу и проверьте ее контрольную сумму:
$YCAgentUpdaterDir = "C:\Program Files\Yandex.Cloud\Guest Agent Updater" New-Item -Path $YCAgentUpdaterDir -ItemType "directory" $p = @{ Uri = "$YCAgentUpdaterBaseUri/release/$YCAgentUpdaterVersion/windows/amd64/guest-agent-updater.exe" OutFile = "$YCAgentUpdaterDir\guest-agent-updater.exe" } Invoke-RestMethod @p $YCAgentUpdaterHashOrig = (Invoke-RestMethod "$YCAgentUpdaterBaseUri/release/$YCAgentUpdaterVersion/windows/amd64/guest-agent-updater.exe.sha256").Trim() $YCAgentUpdaterHashCopy = (Get-Filehash -Path "$YCAgentUpdaterDir\guest-agent-updater.exe" -Algorithm SHA256 | Select-Object -ExpandProperty Hash).ToLower() if ($YCAgentUpdaterHashOrig -eq $YCAgentUpdaterHashCopy) { Write-Host "Agent updater checksum verified" } else { Write-Host "Agent updater checksum NOT verified" }
Результат:
Agent updater checksum verified
-
Установите агент:
& $YCAgentUpdaterDir\guest-agent-updater.exe update
-
Проверьте, что агент установлен в качестве службы, а служба запущена:
Get-Service "yc-guest-agent"
Результат:
Status Name DisplayName ------ ---- ----------- Running yc-guest-agent yc-guest-agent
Служба должна иметь статус
Running
. -
Если служба не запущена, запустите ее:
Start-Service "yc-guest-agent"
Чтобы проверить, что служба запустилась, повторите шаг 4.
-
Настройте задание на обновление агента каждую неделю в случайное время:
$YCAgentUpdaterLogFilepath = "C:\Windows\Temp\guest-agent-updater.log" $p = @{ Execute = 'C:\Windows\System32\cmd.exe' Argument = "/c `"$YCAgentUpdaterDir\guest-agent-updater.exe`" update --log-level debug > $YCAgentUpdaterLogFilepath" } $YCAgentUpdaterAction = New-ScheduledTaskAction @p $RandomWeekdayNumber = Get-Random -Minimum 0 -Maximum 6 $DaysOfWeek = @("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday") $RandomWeekday = $DaysOfWeek[$RandomWeekdayNumber] $RandomHour = Get-Random -Minimum 0 -Maximum 23 $RandomMinute = Get-Random -Minimum 0 -Maximum 59 $RandomSecond = Get-Random -Minimum 0 -Maximum 59 $p = @{ Weekly = $true At = ([datetime]::Today).AddHours($RandomHour).AddMinutes($RandomMinute).AddSeconds($RandomSecond) RandomDelay = New-TimeSpan -Hours 24 # with huge random delay DaysOfWeek = $RandomWeekday } $YCAgentUpdaterTrigger = New-ScheduledTaskTrigger @p $YCAgentUpdaterTaskName = "yc-guest-agent-updater" $p = @{ TaskName = $YCAgentUpdaterTaskName Action = $YCAgentUpdaterAction User = 'System' RunLevel = 'Highest' Trigger = $YCAgentUpdaterTrigger } Register-ScheduledTask @p | Out-Null
-
Запустите задание:
Get-ScheduledTask -TaskName $YCAgentUpdaterTaskName | Start-ScheduledTask $Timeout = 30 $Deadline = ([datetime]::Now).AddSeconds($timeout) while ((Get-ScheduledTask $YCAgentUpdaterTaskName).State -ne "Ready") { Start-Sleep -Seconds 1 if ([datetime]::Now -gt $Deadline) { Write-Host "Deadline exceeded" break } }
-