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:检测是否存在注册表值

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

$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 结合使用

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Existence

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

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

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-ExpectedValue

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

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

Type:String[]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-ExpressionOperator

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

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

Type:RegistryValueRuleExpressionOperator
Accepted values:IsEquals, NotEquals, GreaterThan, LessThan, Between, GreaterEquals, LessEquals, OneOf, NoneOf, BeginsWith, NotBeginsWith, EndsWith, NotEndsWith, Contains, NotContains
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-ForceWildcardHandling

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

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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
Type:RegistryRootKey
Aliases:RegistryHive
Accepted values:ClassesRoot, CurrentConfig, CurrentUser, LocalMachine, Users
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Is64Bit

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

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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
Type:String
Aliases:RegistryKey
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-PropertyType

添加 Value 参数时,PropertyTypeExpressionOperator 和 ExpectedValue 一同使用。 使用这些参数时,注册表项值必须满足规则以指示存在此应用程序。 此 PropertyType 参数数据类型注册表项值的默认值。

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

Type:SettingDataType
Accepted values:Version, Integer, String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Value

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

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

Type:SwitchParameter
Aliases:ValueRule
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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
Type:String
Aliases:RegistryValueName
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

输入

输出

System.Object