В этой теме я нашел способ проверить, имеет ли пользователь административные привилегии. Однако, когда я пытаюсь использовать логическую логику, это не сработает.Административные привилегии
$user = [Security.Principal.WindowsIdentity]::GetCurrent();
(New-Object Security.Principal.WindowsPrincipal $user).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
if($user = $false){cls;Write-warning "Starting and stopping services can only be done with administrative privileges.`nPlease restart this script from an elevated prompt!";Read-host;exit
}
Проблема заключается в том, в то время как работает скрипт с моего компьютера, не возбуждая Powershell с правами администратора текст «False» идет вверх. Тем не менее, оператор if не срабатывает. Я определяю его неправильно?
EDIT: Когда я использую $true
вместо $false
, оператор if запускается как в том случае, когда я это делаю, так и не запускаю скрипт из подсказки с повышенными правами.
Это имеет смысл. На самом деле у меня был -eq в моем оригинальном скрипте. Бог знает, почему я написал «=» здесь. Интересно, однако, где идет новый объект, когда я не назначаю его переменной? Ноль? –
Он будет задерживаться в памяти, пока сборщик мусора не избавится от него. –