Aus Gründen, die außerhalb meiner Kontrolle liegen, wurde ich mit der Einrichtung von Gruppenrichtlinienobjekten / Gruppenrichtlinienobjekten beauftragt, um unsere über 100 Drucker für unsere über 1000 Kunden bereitzustellen.
Die gute Nachricht ist, dass wir über ein Dutzend Standorte haben, und zum größten Teil darf ich alle Drucker am Standort X auf alle Client-PCs am Standort X übertragen.
Die schlechte Nachricht ist, dass die beiden Methoden, die ich kenne ( "Mit Gruppenrichtlinien bereitstellen ...", vom Druckserver " und Verwenden der GPP- / Gruppenrichtlinieneinstellungen ), erheblich mehr manuelle Arbeit erfordern, als ich bereit bin so viele Drucker. Ich kann nicht einmal alle Drucker auf einem Druckserver auswählen und Deploy with Group Policy...
zum Beispiel die Option verwenden - es wird erwartet, dass ich das einzeln mache, was nicht passieren wird. Die GPPs sind noch schlimmer Es wird erwartet, dass ich den Pfad eines Druckers vom Druckserver aus auswähle und dann manuell eine Reihe von Informationen (z. B. die IP-Adresse des Druckers) eingebe, die über die Druckerverbindung abgerufen werden sollen.
Mein Google-Fu für ein Skript zum Hinzufügen aller Drucker auf einem Druckserver zu einem Gruppenrichtlinienobjekt / Gruppenrichtlinienobjekt war leer, und ich sehe keinen anderen Weg, dies auch nur halbautomatisch zu tun, aber ich bleibe dabei mit der Überzeugung, dass mir etwas fehlt, weil es keine vernünftige Person gibt, die Hunderte von Druckern manuell zu Gruppenrichtlinienobjekten hinzufügt.
Idealerweise möchte ich einen programmatischen Weg finden, um die GPPs zu verwenden, aber unter diesen Umständen wäre jede Lösung, bei der nicht Dutzende von Stunden manuell Drucker hinzugefügt werden, einfach großartig.
Hat jemand eine Möglichkeit, dies zu tun, oder muss ich ein PowerShell-Skript erstellen und / oder einen Untergebenen dazu verleiten?
quelle
$GPM = New-Object -ComObject GPMgmt.Gpm
. Ich denke, dass die Benutzeroberfläche, obwohl sie ein absolutes Schwein ist, mit dem Sie arbeiten können, Ihnen eine etwas unterstützendere Methode bietet, als nur XML zu hacken, das wie ein echtes Gruppenrichtlinienobjekt aussieht und riecht. Niemand mag COM. Am allerwenigsten wir Powersheller.Antworten:
Ich habe ziemlich hart gegoogelt und sogar
backup-GPO
in der Hoffnung gespielt, die resultierende XML-Datei hacken und erneut importieren zu können, aber ich vermute, dass ein PowerShell-Skript in Ihrer Zukunft liegt.Ist doch nicht so schlimm. Sie können die Druckerliste vom nächstgelegenen Server generieren und diese dann durchlaufen und zuordnen.
Etwas wie das:
Wenn die Drucker als logische Elemente bezeichnet werden und es eine logische Möglichkeit gibt, die Computer zu identifizieren, können Sie sie möglicherweise weiter verfeinern. Früher habe ich den nächstgelegenen Server ausgewählt, indem ich zum Beispiel die Client-IP-Adresse abgerufen habe. Wenn die IP-Adresse 10.20. * Ist, gehen Sie zu Server1. Etc.
Ich hoffe das hilft.
Bearbeiten:
Wenn ich mir die Dokumentation von @ EvanAnderson ansehe, bin ich mir ziemlich sicher, dass XML hackbar ist.
Relevantes Stück meiner exportierten Datei (mit Redaktionen):
quelle
Das Powershell-Management von Gruppenrichtlinien ist meiner Meinung nach ohne (kommerzielle) Produkte von Drittanbietern zum Kotzen .
Ich denke, Sie stecken nicht mehr in XML (oder in HTML, wenn Sie es vorziehen ) in Gruppenrichtlinienobjekten, um das zu tun, wonach Sie suchen.
Glücklicherweise sieht das XML nicht so furchterregend aus . Der UID-Wert pro Drucker (auf den sich @KatherineVillyard in ihrem Kommentar meiner Meinung nach bezieht) ist nur eine zufällige GUID, die für jeden Drucker generiert wird, auf den in XML verwiesen wird.
Hier ist ein Beispiel für einen Powershell-Code, der schamlos dem Code von Katherine nachempfunden ist:
(Ich schreibe wirklich sehr, sehr hässlichen Powershell-Code.)
Ich habe nicht wirklich versucht, dass die GPP-CSE dieses XML analysiert. Das XML wird zumindest validiert.
Ich fange an darüber nachzudenken, eine Monstrosität zu schreiben, indem
Get-GPO
ich die GUID verwende und analysiere, um zum Dateisystempfad für das Gruppenrichtlinienobjekt in SYSVOL zu gelangen, aber da ich heute Abend echte Arbeit leisten muss, denke ich, dass ich gehen werde das als Übung für den Leser. > lächeln <Es sollte jedoch durchaus machbar sein.quelle
Ich habe kürzlich ein ähnliches Projekt durchgeführt und nachdem ich mir die gute alte GPO-Push-Methode im Vergleich zu neuerem GPP im Vergleich zu Scripting angesehen hatte, entschied ich mich für das Scripting des Ganzen. Ich habe keine Ahnung, was für Sie am besten funktionieren würde, aber hier sind ein paar Hinweise für Sie:
Verwenden Sie im Idealfall einen Client mit einem neuen Betriebssystem (Windows 8/2012 +), um eine Verbindung zu Druckservern herzustellen und Druckerinformationen von Druckservern abzurufen:
Get-Printer -computer PrintServerName
Verwenden Sie AD-Sicherheitsgruppen, um Druckwarteschlangen Computern zuzuordnen. Angenommen, Sie haben eine Druckwarteschlange (Sie haben den obigen Befehl erhalten) mit dem Namen \ PrintServer1 \ MyColorPrinter123, erstellen eine Sicherheitsgruppe wie Drucker.group.PrintServer1.MyColorPrinter123 und fügen die Computer dieser Gruppe hinzu
Verfügen Sie im Startskript über eine Funktion, mit der Sie die Gruppenmitgliedschaft des Computers beim Start überprüfen und feststellen können, ob er Teil einer Druckergruppe ist. Wenn dies der Fall ist, verwenden Sie die integrierten Befehle printui.exe (oder printui.dll), um den Drucker wie folgt zuzuordnen
Aufruf-Ausdruck 'rundll32 printui.dll, PrintUIEntry / ga / n "\ PrintServer1 \ MyColorPrinter123" / q'
Sobald der Computer hochgefahren ist, überträgt dieser Druckspooler-Dienst die 'Druckverbindung', wie sie von Gruppenrichtlinienobjekten verwendet wurde, an jeden Benutzer, der sich anmelden wird.
Sie können viel detaillierter gehen **, aber auf hohem Niveau ist es das, was es braucht.
** Ich habe eine GUI erstellt, mit der Benutzer (Techniker wirklich) einen beliebigen Druckserver auswählen können, und die ihnen eine Liste der Drucker auf diesem Server gibt. Wenn sie eine auswählen, können sie alle Eigenschaften davon sehen. Diese Informationen stammen von Get-Printer, den ich oben erwähnt habe. Wenn Sie diese Daten als CSV exportieren, können Sie sie erneut verwenden, um Informationen anzuzeigen.
** Techniker verwenden diese GUI, um eine Anforderung zum Hinzufügen eines Computers zu Druckern zu senden, die eine Verbindung herstellen sollen. Dies ist eine 'Anfrage', b / c sie haben keine Berechtigungen in AD.
** Ein einfaches Backend-Skript überwacht den Ordner und fügt den Computer der oben genannten Druckergruppe hinzu. Wenn Sie also bereits wissen, wer welchen Drucker bekommen soll, können Sie das ganz einfach tun. Das Hinzufügen von Computern zu Gruppen ist mit AD-Cmdlets eine einfache Aufgabe.
** Sie können auch einen Job planen, um die Druckserver auf neue Druckwarteschlangen zu überprüfen und diese mit Ihren AD-Gruppen zu vergleichen.
Das Erstellen einer "verwalteten" Lösung ist also ein bisschen kompliziert, aber es ist einfach, mit den Grundlagen zu beginnen und weitere hinzuzufügen, um ein sehr flexibles, benutzerfreundliches System zu haben, das keine Gruppenrichtlinienobjekte enthält ... nur ein bisschen PowerShell
quelle