Powershell 脚本在部署类型中创建注册表检测方法



所以我有脚本在SCCM中创建应用程序,还有一个脚本来创建部署类型。 在部署类型中,我正在创建一个使用注册表的检测方法。

$clause1 = New-CMDetectionClauseRegistryKeyValue -Hive LocalMachine -KeyName "SOFTWAREFolder1Folrder2$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。

我用Get-CMDeploymentType提取了有关DeploymenType的信息。我找到了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>

有没有人有想法。

感谢高级

所以永远不要吸吮任何东西。

正如我所说,您可以在上面看到,我通过get-CMDeploymentType提取了信息,并在选中复选框的情况下查看了一次,在手动设置未选中时查看了一次。

但是有些东西困扰着我。

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

魔术在Is64Bit="\true\"部分

我确信在SCCM中手动更改它后,这仍然是正确的,所以我没有研究开关-is64Bit

TechNet 论坛上有人说我应该再研究一下,我照做了。我把它放进了剧本里,哦,想知道它有效。

New-CMDetectionClauseRegistryKeyValue -Hive LocalMachine -KeyName "SOFTWAREFolder1Folrder2$DepName" -Is64Bit -ValueName "some_Value" -PropertyType String -ExpressionOperator IsEquals -ExpectedValue $DepNummer -Value

这是版本,因此未选中复选框。

问候

相关内容

  • 没有找到相关文章