如何使用 IF 语句,如果满足则继续 powershell 脚本中的一部分

How to use IF statements, that if met proceed to a part in the powershell script

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

我是不是做错了?

为此使用 switch 语句,因此您还可以处理注册表查找不 return 预期值之一的情况:

$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 }
}
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
}