这应该是 ProgramFlags 属性的一部分,它基本上是几个选项的位掩码,遗憾的是它们没有自己的显式属性。这是所有旧的包/程序类型对象的一个常见概念,处理起来有点麻烦。程序标志在SMS_Program WMI 类的描述中有详细描述,它说:
0x00000080 (7): RUN_DEPENDANT_ALWAYS。如果设置,则应始终运行此程序的直接依赖项。
所以基本上你必须翻转第 7 位才能打开或关闭它。现在我不知道你是否熟悉位掩码的这个概念,它基本上意味着以二进制形式查看一个整数并为每个位置分配一个布尔值来翻转它,但将它存储为最终数字,即“总和”所有的位。
因此,在您的情况下,这意味着您的 ProgramFlags 应该类似于 2282791936 (这些数字当然会根据您的其他选项而有所不同,但是当您更改设置时它们应该会改变)当您没有选中该框时,如果您有 2282792064它检查了。(类描述中提到的 0x80 是十进制的 128,所以一个数字应该比另一个数字高 128)
现在,“官方”的编程方式当然是从描述中收集你想要的所有标志,并建立你自己的号码并使用它,但我发现其中一些奇怪地依赖,有些难以理解,所以在像您这样的情况下,我从 GUI 角度确切地知道我想要什么,我总是根据需要创建一个程序,导出值并将其硬编码到我的脚本中。您可以使用与依赖程序相同的方式执行此操作:
$p = Get-CMProgram -PackageName "packagename" -ProgramName "programname"
$p.ProgramFlags = <your flags>
$p.put()