Настройте правила для обнаружения присутствия типа развертывания с помощью Powershell в SCCM - PullRequest
0 голосов
/ 30 сентября 2019

Я несколько дней работал над сценарием 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

Я хотел бы иметь возможность изменить значение логического выражения, используемого для сравнения ключей реестра в соединителе типа развертывания (с «И» на «Или». '), но ни одна из моих попыток пока не сработала с использованием этого метода (в комментариях).

Кто-нибудь знает, как это сделать, или, может быть, лучший способ сделать это?

Спасибо

1 Ответ

0 голосов
/ 01 октября 2019
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


$cla2 = New-CMDetectionClauseRegistryKeyValue -Hive LocalMachine `
                                                     -Is64Bit `
                                                     -KeyName "SOFTWARE\WOW6432\Microsoft\Windows\CurrentVersion\Uninstall\!$($configCM.application.name)" `
                                                     -Existence  `
                                                     -PropertyType String `
                                                     -ValueName "UninstallString" 
$logical2 = $cla2.Setting.LogicalName


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) `
                               -DetectionClauseConnector @(@{LogicalName=$logical1;Connector="or"},@{LogicalName=$logical2;Connector="or"}) `
                               -SlowNetworkDeploymentMode Download | Out-Null
...