первый раз packoverflower.Что означают значения 'A' и 'R' для msiScriptName?
У меня есть необходимость удалить записи «призрака» из PackageRegistrations моих объектов развертывания программного обеспечения.
Что я имею в виду, так это то, что в объекте ADSI есть больше записей, чем файлы MSI/MST, связанные с объектом групповой политики. то есть то, что, по-видимому, этот блоггер испытывает http://justanotheritblog.co.uk/2016/11/15/list-msi-paths-from-software-installation-policies/ (я просто нашел это при изучении моей проблемы).
Когда вы обмениваетесь информацией о функциях в ADSI, я разбил «msiScriptName», который, похоже, имеет значение «A» или «R».
То, что я не могу найти, - это любая информация о том, что могут представлять эти значения.
Любые идеи о том, что означают «A» и «R», и/или как правильно идентифицировать и/или удалять записи «призрак», получаемые в значительной степени.
Причина в том, что у меня есть целая группа объектов развертывания программного обеспечения, которым требуется обновление пути к файлу, и вместо того, чтобы вручную редактировать каждый из них, я хотел использовать PowerShell для их массового обновления - мы переходим к 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}
}
Спасибо Тим, очень полезно. Я могу сделать еще несколько тестов, когда найду время. – Craig