我如何通过 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 就可以了。
我太专注于没有示例,所以我没有阅读完整的语法说明。
我有一个 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 就可以了。
我太专注于没有示例,所以我没有阅读完整的语法说明。