Gruppenrichtlinien Item-Level targeting per Power Shell ändern
Hallo zusammen,
ich hab ein Problem und hoffe das mir hier jemand helfen kann. Wir haben in einer Domain ca. 150 GPO`s die einen Drucker mappen, fragt nicht wieso "ist halt historisch gewachsen.".
Also jeder Drucker hat eine Policy die einer AD Gruppe (auch für jeden Drucker eine) den Drucker mappt....
Jetzt haben wir eine neue XenApp Umgebung und die Drucker zusammen gefasst in Citrix Policys. Allerdings sitzen die in einer anderen Domain. Ich sollte / müsste jetzt zumindest für die Zeit der Test Phase, vermutlich noch länger. Die Policys auf der alten Domain für die neue Umgebung deaktivieren und zwar über Item-level targeting. Und zwar:
the Organizational Unit the computer blongs to is not OU=XDA, OU=W2k12R2, OU=Server, DC=Domain, DC=local or one of its descendants.
Sieht in den Settings dann so aus:
Item-level targeting: Organizational UnitAttribute Value
bool AND
not 1
name OU=XDA,OU=Win2k12R2,OU=Server,DC=Domain,DC=local
userContext 0
directMember 0
Wie bekomme ich das in ein Powershell Script das mir anhand einer csv Datei die Arbeit abnimmt mich durch jede Policy durch zu klicken?
Ich bin super Dankbar für Lösungen!
Viele Grüße
Lukas
ich hab ein Problem und hoffe das mir hier jemand helfen kann. Wir haben in einer Domain ca. 150 GPO`s die einen Drucker mappen, fragt nicht wieso "ist halt historisch gewachsen.".
Also jeder Drucker hat eine Policy die einer AD Gruppe (auch für jeden Drucker eine) den Drucker mappt....
Jetzt haben wir eine neue XenApp Umgebung und die Drucker zusammen gefasst in Citrix Policys. Allerdings sitzen die in einer anderen Domain. Ich sollte / müsste jetzt zumindest für die Zeit der Test Phase, vermutlich noch länger. Die Policys auf der alten Domain für die neue Umgebung deaktivieren und zwar über Item-level targeting. Und zwar:
the Organizational Unit the computer blongs to is not OU=XDA, OU=W2k12R2, OU=Server, DC=Domain, DC=local or one of its descendants.
Sieht in den Settings dann so aus:
Item-level targeting: Organizational UnitAttribute Value
bool AND
not 1
name OU=XDA,OU=Win2k12R2,OU=Server,DC=Domain,DC=local
userContext 0
directMember 0
Wie bekomme ich das in ein Powershell Script das mir anhand einer csv Datei die Arbeit abnimmt mich durch jede Policy durch zu klicken?
Ich bin super Dankbar für Lösungen!
Viele Grüße
Lukas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 330646
Url: https://administrator.de/contentid/330646
Ausgedruckt am: 25.11.2024 um 09:11 Uhr
10 Kommentare
Neuester Kommentar
Hi,
"powershellen" kannst Du offenbar?
Die Einstellungen landen ganz einfach in XML-Files, welche im zur GPO gehörenden Ordner unter \\domain.local\Sysvol\domain.local\Policies gespeichert sind.
Du passt also eine GPO von Hand an. Dann schaust Du Dir die zugehörige XML-Datei an und schon weist Du, wie Du die Dateien der verbleibenden GPO's ändern musst.
E.
Edit:
\\domain.local\SysVol\domain.local\Policies\{GUID der GPO}\Machine\Preferences
\\domain.local\SysVol\domain.local\Policies\{GUID der GPO}\User\Preferences
"powershellen" kannst Du offenbar?
Die Einstellungen landen ganz einfach in XML-Files, welche im zur GPO gehörenden Ordner unter \\domain.local\Sysvol\domain.local\Policies gespeichert sind.
Du passt also eine GPO von Hand an. Dann schaust Du Dir die zugehörige XML-Datei an und schon weist Du, wie Du die Dateien der verbleibenden GPO's ändern musst.
E.
Edit:
\\domain.local\SysVol\domain.local\Policies\{GUID der GPO}\Machine\Preferences
\\domain.local\SysVol\domain.local\Policies\{GUID der GPO}\User\Preferences
Hallo Lukas,
hier auf die schnelle ein Skript, für den Fall das deine CSV so aussieht:
Sie kann auch anders aufgebaut sein, nur musst du den Namen der Spalte in der der Name der GPOs steht in der Variablen anpassen. Delimiter kannst du bei Bedarf auch in Zeile 6 anpassen.
Grüße Uwe
hier auf die schnelle ein Skript, für den Fall das deine CSV so aussieht:
"Name"
"Name_der_GPO_1"
"Name_der_GPO_2"
"Name_der_GPO_3"
...
# -----
$csvpath = 'C:\Pfad\data.csv'
$csv_column_name = 'Name'
# -----
Import-Module ActiveDirectory
$csv = Import-CSV $csvpath -Delimiter ';'
$domaininfo = Get-ADDomain
$policies = "\\$($domaininfo.PDCEmulator)\sysvol\$($domaininfo.DNSRoot)\policies"
foreach($gpo in $csv){
$id = (Get-GPO -Name $gpo.$csv_column_name).Id
$xmlpath = "$policies\{$id}\User\Preferences\Printers\Printers.xml"
if (Test-Path $xmlpath){
$xml = [xml](gc $xmlpath)
$xml.Printers.SharedPrinter | %{
write-host "Adding Filter to GPO '$($gpo.$csv_column_name)'."
$filtersnode = $_.SelectSingleNode('Filters')
if(!$filtersnode){
$filtersnode = $xml.CreateElement('Filters')
$_.AppendChild($filtersnode)| out-null
}
# create filter node
$f = $xml.CreateDocumentFragment()
$f.InnerXML = '<FilterOrgUnit bool="AND" not="1" name="OU=XDA, OU=W2k12R2, OU=Server, DC=Domain, DC=local" userContext="0" directMember="0" />'
$filtersnode.AppendChild($f) | out-null
# change printer add method to replace
$_.Properties.action = 'R'
# set changed date time of printer to now
$_.changed = (get-date).toString('yyyy-MM-dd HH:mm:ss')
# remove if not applicable to 1
$_.SetAttribute('removePolicy','1')
}
$xml.Save($xmlpath)
}
}
Alles oben angepasst.
Grüße Uwe
Noch mehr Wünsche? --> PM (kostenpflichtig)
Wie gesagt ich bin eher Anfänger was Programmieren und Scripten angeht.
Kann ich auch nichts dran ändern, nur du .Grüße Uwe
Noch mehr Wünsche? --> PM (kostenpflichtig)