New-CMDetectionClauseRegistryKeyValue

为注册表项值创建检测方法子句。

语法

New-CMDetectionClauseRegistryKeyValue
   -ExpressionOperator <RegistryValueRuleExpressionOperator>
   -Hive <RegistryRootKey>
   [-Is64Bit]
   -KeyName <String>
   -PropertyType <SettingDataType>
   -ValueName <String>
   -ExpectedValue <String[]>
   [-Value]
   [-DisableWildcardHandling]
   [-ForceWildcardHandling]
   [<CommonParameters>]
New-CMDetectionClauseRegistryKeyValue
   -Hive <RegistryRootKey>
   [-Is64Bit]
   -KeyName <String>
   -PropertyType <SettingDataType>
   -ValueName <String>
   [-Existence]
   [-DisableWildcardHandling]
   [-ForceWildcardHandling]
   [<CommonParameters>]

说明

使用此 cmdlet 在应用程序的检测方法中创建子句。 此子句是注册表项值的规则,用于指示是否存在应用程序。

若要检测是否存在注册表项而不是值,请使用 New-CMDetectionClauseRegistryKey cmdlet。

使用此 cmdlet 后,请对部署类型使用 Add-Set- cmdlet 之一。 将此检测子句对象传递给 AddDetectionClauseRemoveDetectionClause 参数。

若要对检测子句进行分组,请在部署类型 cmdlet 上使用 GroupDetectionClauses 参数。

注意

从 Configuration Manager 站点驱动器运行 Configuration Manager cmdlet,例如 PS XYZ:\>。 有关详细信息,请参阅 入门

示例

示例 1:检测是否存在注册表值

此示例创建一个子句来检测是否存在适用于 Windows 的 Git 当前版本值。

$regClause = New-CMDetectionClauseRegistryKeyValue -Hive LocalMachine -KeyName "SOFTWARE\GitForWindows" -PropertyType String -ValueName "CurrentVersion" -Existence

Set-CMMsiDeploymentType -ApplicationName "Git for Windows" -DeploymentTypeName "Install" -AddDetectionClause $regClause

示例 2:比较注册表中的版本值

此示例创建一个子句,以将注册表中 Microsoft 365 的版本进行比较,以大于或等于 16.0.10730.20304

$clause = New-CMDetectionClauseRegistryKeyValue -Hive LocalMachine -KeyName 'Software\Microsoft\Office\ClickToRun\Configuration' -PropertyType Version -ValueName 'VersionToReport' -Value -ExpectedValue '16.0.10730.20304' -ExpressionOperator GreaterEquals

Set-CMMsiDeploymentType -ApplicationName "Microsoft 365" -DeploymentTypeName "Install" -AddDetectionClause $clause

参数

-DisableWildcardHandling

此参数将通配符视为文本字符值。 不能将其与 ForceWildcardHandling 组合使用。

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Existence

添加此参数时,注册表项值必须存在于目标系统上,以指示存在此应用程序。

若要评估此注册表项值的数据的规则,请使用 Value 参数,而不是仅仅存在。

类型:SwitchParameter
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-ExpectedValue

添加 Value 参数时,请将 ExpectedValuePropertyTypeExpressionOperator 配合使用。 使用这些参数时,注册表项值必须满足指示存在此应用程序的规则。 此 ExpectedValue 参数指定要与注册表项值进行比较的值。

要比较的值取决于指定的 PropertyType

类型:String[]
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-ExpressionOperator

添加 Value 参数时,将 ExpressionOperatorPropertyTypeExpectedValue 配合使用。 使用这些参数时,注册表项值必须满足指示存在此应用程序的规则。 此 ExpressionOperator 参数指定将注册表项值与预期值进行比较的运算符。

从版本 2010 开始,参数类型从 RuleExpressionOperator 更改为 RegistryValueRuleExpressionOperator

类型:RegistryValueRuleExpressionOperator
接受的值:IsEquals, NotEquals, GreaterThan, LessThan, Between, GreaterEquals, LessEquals, OneOf, NoneOf, BeginsWith, NotBeginsWith, EndsWith, NotEndsWith, Contains, NotContains
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-ForceWildcardHandling

此参数处理通配符,并可能导致意外行为, (不建议) 。 不能将其与 DisableWildcardHandling 组合使用。

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Hive

指定存在项的注册表配置单元。 使用 KeyName 参数指定密钥名称。 使用 ValueName 参数指定注册表项值。

例如,以下 PowerShell 命令转换为以下参数值:

Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' | Select-Object CurrentVersion

参数
Hive LocalMachine
KeyName 'SOFTWARE\Microsoft\Windows NT\CurrentVersion'
ValueName CurrentVersion
类型:RegistryRootKey
别名:RegistryHive
接受的值:ClassesRoot, CurrentConfig, CurrentUser, LocalMachine, Users
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-Is64Bit

添加此参数以指示此注册表项与 64 位系统上的 32 位应用程序相关联。

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-KeyName

指定必须存在的注册表项的名称,以指示此应用程序的存在。 使用 Hive 参数指定应存在此键的注册表配置单元。 使用 ValueName 参数指定注册表项值。

例如,以下 PowerShell 命令转换为以下参数值:

Get-ItemProperty“HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion”|Select-Object CurrentVersion

参数
Hive LocalMachine
KeyName 'SOFTWARE\Microsoft\Windows NT\CurrentVersion'
ValueName CurrentVersion
类型:String
别名:RegistryKey
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-PropertyType

添加 Value 参数时,请将 PropertyTypeExpressionOperatorExpectedValue 配合使用。 使用这些参数时,注册表项值必须满足指示存在此应用程序的规则。 此 PropertyType 参数指定注册表项值的数据类型。

例如,将此参数设置为 Version,将 ExpressionOperator 设置为 IsEquals并将 ExpectedValue 设置为 1.48.1.0。 然后,该规则检查指定的注册表项值是否具有相同的版本。

类型:SettingDataType
接受的值:Version, Integer, String
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-Value

添加 Value 参数时,注册表项值必须满足规则,以指示存在此应用程序。 将此参数与以下参数一起使用: ExpectedValueExpressionOperatorPropertyType

若要仅检查注册表项值是否存在,请使用 Exists 参数,而不是评估规则。

类型:SwitchParameter
别名:ValueRule
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-ValueName

指定指示应用程序存在的注册表项值。 使用 Hive 参数指定注册表配置单元,使用 KeyName 指定注册表项。

例如,以下 PowerShell 命令转换为以下参数值:

Get-ItemProperty“HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion”|Select-Object CurrentVersion

参数
Hive LocalMachine
KeyName 'SOFTWARE\Microsoft\Windows NT\CurrentVersion'
ValueName CurrentVersion
类型:String
别名:RegistryValueName
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

输入

None

输出

System.Object