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" 选项的情况?)。
第一次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" 选项的情况?)。