如何使用IF语句,如果遇到,则继续执行powershell脚本中的一部分

时间:2017-01-12 19:43:04

标签: powershell if-statement statements

我编写了一个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

我是以错误的方式解决这个问题吗?

2 个答案:

答案 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
}