如何在PowerShell中判断命令结果同时包含两种指定密钥保护类型
PowerShell判断BitLocker密钥保护类型同时包含指定值的正确写法
错误写法分析
- 第一种写法逻辑错误:
&& "RecoveryPassword"部分不具备实际判断作用,-contains仅验证左侧集合是否包含"tpmpin",后面的字符串会被PowerShell视为布尔值$true,导致实际只判断了是否存在"TpmPin" - 第二种写法逻辑错误:将两个密钥保护类型名拼接成单一字符串,而BitLocker返回的类型集合中不存在该组合值,无法实现预期判断
正确实现方式
先将密钥保护类型集合存入变量(避免重复执行命令提升效率),再通过-contains(区分大小写)或-icontains(不区分大小写)结合-and完成同时存在的判断,无需嵌套IF:
区分大小写版本
$keyTypes = (Get-BitlockerVolume -MountPoint "C:").KeyProtector.KeyProtectorType if ($keyTypes -contains "TpmPin" -and $keyTypes -contains "RecoveryPassword") { # 此处添加符合条件时的执行代码 Write-Host "C盘BitLocker同时启用了TpmPin和RecoveryPassword保护" }
不区分大小写版本(适配输入大小写不规范的场景)
$keyTypes = (Get-BitlockerVolume -MountPoint "C:").KeyProtector.KeyProtectorType if ($keyTypes -icontains "tpmpin" -and $keyTypes -icontains "recoverypassword") { # 此处添加符合条件时的执行代码 Write-Host "C盘BitLocker同时启用了TpmPin和RecoveryPassword保护" }
内容的提问来源于stack exchange,提问作者user20225877
相关产品推荐
相关产品推荐

