我编写了一个Powershell脚本,在Server 2012中安装了许多功能和角色,脚本运行完美,但我需要帮助确定如何检查是否启用了UAC,如果是,则提示服务器将当他们按Enter键或不按下时重新启动,然后继续前进到下一行,或者脚本真正启动的下一个功能行。
所以我有这行检查是否启用了UAC或是否已启用
(Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System).EnableLUA
如果禁用UAC,则会输出0,如果启用了UAC,则会打印1。
如果它被禁用,我希望它继续在脚本中读取
Start-Transcript
如果它已启用,则显示为1,我希望它继续执行此行
New-ItemProperty -Path HKLM:Software\Microsoft\Windows\CurrentVersion\policies\system -Name EnableUA -PropertyType DWord -Value 0 -Force
Restart-Computer
我是以错误的方式解决这个问题吗?
答案 0 :(得分:1)
为此使用switch语句,因此您还可以处理注册表查找未返回其中一个预期值的情况:
$uacStatus = (Get-ItemProperty HKLM:\...).EnableLUA
switch ($uacStatus) {
0 { Start-Transcript }
1 { New-ItemProperty ...; Restart-Computer }
default { Write-Host "UAC status not recognized: $uacStatus"; exit 1 }
}
答案 1 :(得分:1)
if ( (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System).EnableLUA -eq 0 )
{
Start-Transcript
}
else
{
New-ItemProperty -Path HKLM:Software\Microsoft\Windows\CurrentVersion\policies\system -Name EnableUA -PropertyType DWord -Value 0 -Force
Restart-Computer
}