2017-01-09 15 views
0

первый раз 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} 
} 

ответ

0

Насколько я могу сказать следующее, А Рекламируемый (т.е. для установки), и R является удаление. Пакеты Ghost, вероятно, имеют R, поскольку они больше недействительны и поэтому подлежат удалению (я не уверен, что это применимо только в том случае, если перед удалением включена опция «удалить при выходе из области действия?»).

+0

Спасибо Тим, очень полезно. Я могу сделать еще несколько тестов, когда найду время. – Craig