msiScriptName 的 'A' 和 'R' 的值代表什么?

What do the values of 'A' and 'R' for msiScriptName represent?

第一次Whosebuger。

我需要从我的软件部署 GPO 的 PackageRegistrations 中删除 'ghost' 个条目。

我的意思是 ADSI 对象中的条目多于 MSI/MST 与 GPO 关联的文件。也就是说,这位博主似乎也在经历什么 http://justanotheritblog.co.uk/2016/11/15/list-msi-paths-from-software-installation-policies/(我在调查我的问题时才发现这一点)。

在查看 ADSI 中的属性时,我偶然发现了 'msiScriptName',它的值似乎是 'A' 或 'R'。

我似乎找不到关于这些值可能代表什么的任何信息。

关于 'A' 和 'R' 是什么意思的任何想法 and/or 如何正确识别 and/or 删除 'ghost' 条目非常受欢迎。

这样做的原因是我有一大堆软件部署 GPO 需要更新文件路径,而不是手动编辑每个 GPO 我想使用 PowerShell 批量更新它们 - 我们正在从固定文件服务器,所以我需要更新 msiFileList 属性。这我可以做到,但不想在不相关的对象上浪费处理开销。

以下是粗略的代码,说明我是如何做的

$MSIFiles = @()

# Get all the SoftwareDeployment GPOs, indicated by a displayname continaing 'Install' and create an object for each MSI/MST associated to it.
$Packages = Get-GPO -All | Where-Object { $_.DisplayName -like "*Install*" } | Get-ADObjectGPOPackages -Domain 'skyriver.internal'
foreach ($p in $Packages)
{
    $msiCount = ($p.msiFileList | Measure-Object).Count
    $msiFileListNew = @()
    for ($i = 0; $i -lt $msiCount; $i ++)
    {
        $msiFile = $p.msiFileList[$i] -replace 'hoth(01|01.skyriver.internal|02.skyriver.internal)','skyriver.internal\data'
        $msiFileListNew += $msiFile
    }
    $Properties = [ordered]@{
        'gpoDisplayName' = $p.gpoDisplayName
        'PackageNumber' = $p.PackageNumber
        'DisplayName' = $p.DisplayName
        'CN' = $p.CN
        'DistinguishedName' = $p.DistinguishedName
        'Identity' = $p.Identity
        'msiFileList' = $msiFileListNew
    }
    $obj = New-Object -TypeName psobject -Property $Properties
    $MSIFiles += $obj
}

# Now make the replacements.
foreach ($m in $MSIFiles)
{
    Set-ADObject -Identity $m.Identity -Server dagobah.skyriver.internal -Replace @{msiFileList = $m.msiFileList}
}

据我所知,A 是 Advertised(即可供安装),R 是 Remove。 Ghost 软件包可能有一个 R,因为它们不再有效,因此将被卸载(我不确定这是否仅适用于删除前启用 "uninstall when it falls out of scope" 选项的情况?)。