Сценарий Powershell, создающий метод обнаружения реестра в DeploymentType

Итак, у меня есть сценарий для создания приложения в SCCM и сценарий для создания типа развертывания. в DeploymentType я создаю метод обнаружения, который использует реестр.

$clause1 = New-CMDetectionClauseRegistryKeyValue -Hive LocalMachine -KeyName "SOFTWARE\Folder1\Folrder2\$DepName" -ValueName "some_Value" -PropertyType String -ExpressionOperator IsEquals -ExpectedValue $DepNummer -Value

    Add-CMScriptDeploymentType -ApplicationName $DepName -DeploymentTypeName $DepTypeName -ContentLocation $DepContent -InstallCommand $DepInst -UninstallCommand $DepUninst -AddDetectionClause $Clause1 -EstimatedRuntimeMins $DepMaxRun -MaximumRuntimeMins $DepMinRun -LogonRequirementType WhetherOrNotUserLoggedOn -UserInteractionMode Hidden -InstallationBehaviorType InstallForSystem -AddRequirement $oDTRule

Скрипт работает до сих пор, но у меня есть одна небольшая проблема. если вы посмотрите на метод обнаружения реестром, там есть флажок

"Этот раздел реестра связан с 32-разрядным приложением в 64-разрядных системах" Я знаю, что это такое, но я просто не могу понять, что мне нужно сделать, чтобы создать DM без этого коробка проверяется.

Я вытащил информацию о DeploymenType с помощью Get-CMDeploymentType. Я нашел части для DM, но ни намека на этот флажок.

<EnhancedDetectionMethod>
    <Settings xmlns=\"http://schemas.microsoft.com/SystemCenterConfigurationManager/2009/AppMgmtDigest\">
        <SimpleSetting xmlns=\"http://schemas.microsoft.com/SystemsCenterConfigurationManager/2009/07/10/DesiredConfiguration\" LogicalName=\"RegSetting_8277224f-cd13-48b8-8a94-efbe3b67d5ea\" DataType=\"String\">
            <Annotation xmlns=\"http://schemas.microsoft.com/SystemsCenterConfigurationManager/2009/06/14/Rules\">
                <DisplayName Text=\"\"/>
                <Description Text=\"\"/>
            </Annotation>
            <RegistryDiscoverySource Hive=\"HKEY_LOCAL_MACHINE\" Depth=\"Base\" Is64Bit=\"true\" CreateMissingPath=\"true\">
                <Key>SOFTWARE\\Folder1\\Folder2\\Stuff</Key>
                <ValueName>some_Value</ValueName>
            </RegistryDiscoverySource>
        </SimpleSetting>
    </Settings>
    <Rule xmlns=\"http://schemas.microsoft.com/SystemsCenterConfigurationManager/2009/06/14/Rules\" id=\"ScopeId_F7D7B005-5475-42F3-8D53-C6F2B0DA1B17/DeploymentType_1dae9225-e8ee-4923-b38f-2bdcf3bd656d\" Severity=\"Informational\" NonCompliantWhenSettingIsNotFound=\"false\">
        <Annotation>
            <DisplayName Text=\"\"/>
            <Description Text=\"\"/>
        </Annotation>
        <Expression>
            <Operator>Equals</Operator>
            <Operands>
                <SettingReference AuthoringScopeId=\"ScopeId_F7D7B005-5475-42F3-8D53-C6F2B0DA1B17\" LogicalName=\"Application_6f616284-4cb8-423b-94a5-20d6e5f687fd\" Version=\"8\" DataType=\"String\" SettingLogicalName=\"RegSetting_8277224f-cd13-48b8-8a94-efbe3b67d5ea\" SettingSourceType=\"Registry\" Method=\"Value\" Changeable=\"false\"/>
                <ConstantValue Value=\"some_Value\" DataType=\"String\"/>
            </Operands>
        </Expression>
    </Rule>
</EnhancedDetectionMethod>

есть у кого идея.

спасибо в продвинутом


person crdy    schedule 22.11.2019    source источник


Ответы (1)


так что никогда ничего не предполагайте.

как я уже сказал, и вы можете видеть выше, я вытащил информацию через get-CMDeploymentType и просмотрел ее один раз с установленным флажком и один раз, когда я вручную установил его не отмеченным.

Но что-то меня затроллило.

<RegistryDiscoverySource Hive=\"HKEY_LOCAL_MACHINE\" Depth=\"Base\" Is64Bit=\"true\" CreateMissingPath=\"true\">

Магия находится в части Is64Bit="\true\"

я уверен, что после изменения вручную в SCCM это все еще верно, поэтому я не смотрел на переключатель -is64Bit

Ну, кто-то на форуме TechNet сказал, что я должен изучить это снова, и я сделал. Я поместил это в сценарий, и, о чудо, он работает.

New-CMDetectionClauseRegistryKeyValue -Hive LocalMachine -KeyName "SOFTWARE\Folder1\Folrder2\$DepName" -Is64Bit -ValueName "some_Value" -PropertyType String -ExpressionOperator IsEquals -ExpectedValue $DepNummer -Value

Это версия, поэтому флажок не установлен.

С уважением

person crdy    schedule 22.11.2019