Я несколько дней работал над сценарием Powershell, чтобы автоматизировать очень утомительный процесс создания приложений SCCM, и я столкнулся с проблемой, на которую пока не нашел ответа.
Вот что у меня есть:
Import-Module $env:SMS_ADMIN_UI_PATH.Replace("\bin\i386", "\bin\configurationmanager.psd1")
$deployTypeHash = @{
applicationName = "TestApp"
deploymentTypeName = "TestApp"
ContentLocation = "\\A\Network\Path"
InstallCommand = "Install Command"
UninstallCommand = "Uninstall Command"
ScriptLanguage = 'PowerShell'
InstallationBehaviorType = 'InstallForSystem'
LogonRequirementType = 'WhetherOrNotUserLoggedOn'
UserInteractionMode = 'Hidden'
MaximumRuntimeMins = 120
EstimatedRuntimeMins = 20
AddDetectionClause = ""
ValueName = "UninstallString"
}
$cla1 = New-CMDetectionClauseRegistryKeyValue -Hive LocalMachine `
-Is64Bit `
-KeyName "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\!$($configCM.application.name)" `
-Existence `
-PropertyType String `
-ValueName $($deployTypeHash.ValueName)
$logical1 = $cla1.Setting.LogicalName
#COMMENT### $cla1.Connector = 'Or'
$cla2 = New-CMDetectionClauseRegistryKeyValue -Hive LocalMachine `
-Is64Bit `
-KeyName "SOFTWARE\WOW6432\Microsoft\Windows\CurrentVersion\Uninstall\!$($configCM.application.name)" `
-Existence `
-PropertyType String `
-ValueName "UninstallString"
$logical2 = $cla1.Setting.LogicalName
#COMMENT### $cla2.Connector = 'Or'
Add-CMScriptDeploymentType -ContentLocation $($deployTypeHash.ContentLocation) `
-DeploymentTypeName $($deployTypeHash.deploymentTypeName) `
-InstallCommand $($deployTypeHash.InstallCommand) `
-AddDetectionClause @($cla1, $cla2) `
-GroupDetectionClauses @($logical1, $logical2) `
-ApplicationName $($deployTypeHash.applicationName) `
-UninstallCommand $($deployTypeHash.UninstallCommand) `
-InstallationBehaviorType $($deployTypeHash.InstallationBehaviorType) `
-LogonRequirementType $($deployTypeHash.LogonRequirementType) `
-MaximumRuntimeMins $($deployTypeHash.MaximumRuntimeMins) `
-UserInteractionMode $($deployTypeHash.UserInteractionMode) `
-SlowNetworkDeploymentMode Download | Out-Null
Я хотел бы иметь возможность изменить значение логического выражения, используемого для сравнения ключей реестра в соединителе типа развертывания (с «И» на «Или». '), но ни одна из моих попыток пока не сработала с использованием этого метода (в комментариях).
Кто-нибудь знает, как это сделать, или, может быть, лучший способ сделать это?
Спасибо