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

时间:2017-01-09 15:50:34

标签: active-directory windows-installer group-policy

第一次stackoverflower。

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

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

当我在ADSI中找到合适的地方时,我会在'msiScriptName'上发生错误,它似乎有'A'或'R'的值。

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

关于“A”和“R”的含义以及/或如何正确识别和/或删除“幽灵”条目的任何想法都会大受欢迎。

原因是我有一大堆需要更新文件路径的软件部署GPO,而不是手动编辑每个我想用PowerShell批量更新它们的GPO - 我们从固定文件转移到DFS服务器,所以我需要更新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}
}

1 个答案:

答案 0 :(得分:1)

据我所知,A是广告(即可安装),R是删除。 Ghost包可能有一个R,因为它们不再有效,因此要卸载(我不确定这是否仅适用于在删除之前启用“当它超出范围时卸载”选项?)。