我如何通过 New-CMDetectionClauseWindowsInstaller 将产品代码设置为检测方法

How do i set a Productcode as Detection Method via New-CMDetectionClauseWindowsInstaller

我有一个 PowerShell 脚本,可以创建具有部署类型的应用程序... 我能够使用 New-CMDetectionClauseRegistryKeyValue

为注册表项创建 DetectionMethod

但是我想要的是有两个DetectionMethods。一个是注册表项,另一个是 ProductCode。

所以我是这样做的:

$clause1 = New-CMDetectionClauseRegistryKeyValue -Hive LocalMachine -KeyName "pathstuff" -Is64Bit -ValueName "aValue" -PropertyType String -ExpressionOperator IsEquals -ExpectedValue $aVar -Value
$clause2 = New-CMDetectionClauseWindowsInstaller -ProductCode $ProductCode

但是第二个子句出现错误:

The parameter set cannot be resolved with the specified named parameters

相信之后我的台词一定是这样的:

Add-CMScriptDeploymentType -ApplicationName $AppName -DeploymentTypeName $DepTypeName -ContentLocation $DepContentLocation -InstallCommand $DepInstallCommand `
            -UninstallCommand $DepUninstallCommand -AddDetectionClause $clause1,$clause2 -EstimatedRuntimeMins $DepMinRuntime -MaximumRuntimeMins $DepMaxRuntime `
            -LogonRequirementType WhetherOrNotUserLoggedOn -UserInteractionMode Hidden -InstallationBehaviorType InstallForSystem -AddRequirement $oDTRule

但我收到错误

The argument cannot be bound to the AddDetectionClause parameter because it is NULL.

因为第 2 条不起作用...

我发现如果你这样做似乎可行:

$clause1 = New-CMDetectionClauseWindowsInstaller -ProductCode $guid [Value -ExpressionOperator IsEquals -ExpectedValue "1.1.1.1" # Do a version check

但这将是 SCCM 中的第二个单选按钮,我想要第一个。

我只是不知道我错过了什么。没有关于这个的文档... Google 并没有给我太多...

如有任何帮助,我们将不胜感激。

此致

这困扰了我几个星期,最后它只是 RTFM 的一个例子。 所以在 Microsoft Docs Page 上这个命令是我无法阅读的答案。

$clause2 = New-CMDetectionClauseWindowsInstaller -ProductCode $ProductCode -Existence

你只需要在最后加上 -Existence 就可以了。

我太专注于没有示例,所以我没有阅读完整的语法说明。