Z przyczyn niezależnych ode mnie powierzono zadanie skonfigurowania obiektów GPO / GPP w celu wdrożenia naszych ponad 100 drukarek na ponad 1000 naszych klientów.
Dobra wiadomość jest taka, że mamy kilkanaście witryn i w większości przypadków mogę wypychać wszystkie drukarki z witryny X na wszystkie komputery klienckie w witrynie X.
Zła wiadomość jest taka, że dwa sposoby, które wiem, jak to zrobić ( „Wdrażanie za pomocą zasad grupy ...”, z serwera wydruku ” i korzystanie z preferencji zasad GPP / zasad grupy ) wymagają znacznie więcej pracy ręcznej, niż jestem skłonny zrobić. tak wielu drukarek. Nie mogę nawet wybrać wszystkich drukarek na serwerze druku i użyć Deploy with Group Policy...
na przykład opcji - oczekuje, że zrobię to jedna po drugiej, co się nie stanie. GPP są jeszcze gorsze , ponieważ oczekuje, że wybiorę ścieżkę drukarki z serwera wydruku, a następnie ręcznie wprowadzę kilka informacji (takich jak adres IP drukarki), które powinna móc uzyskać z połączenia drukarki.
Mój Google-Fu dla skryptu, aby dodać wszystkie drukarki na serwerze wydruku do GPO / GPP, wyszedł pusty i wydaje mi się, że nie widzę innego sposobu na zrobienie tego nawet w sposób półautomatyczny, ale trzymam się z przekonaniem, że czegoś mi brakuje, ponieważ żaden rozsądny człowiek nie zdecydowałby się ręcznie dodać setek drukarek do obiektów GPO.
Idealnie chciałbym znaleźć programowy sposób korzystania z GPP, ale w tych okolicznościach każde rozwiązanie, które nie wymaga dziesiątek godzin ręcznego dodawania drukarek, byłoby po prostu świetne.
Czy ktoś ma sposób to zrobić, czy też będę musiał zbudować skrypt PowerShell i / lub nakłonić podwładnego do zrobienia tego?
źródło
$GPM = New-Object -ComObject GPMgmt.Gpm
. Myślę, że ten interfejs, choć jest absolutną świnią do pracy, może zapewnić nieco bardziej obsługiwaną metodę niż po prostu włamanie się do XML-a, który wygląda i pachnie jak prawdziwy GPO. Jednak nikt nie lubi COM. Co najmniej my Powershellers.Odpowiedzi:
Googowałem dość mocno, a nawet bawiłem się
backup-GPO
w nadziei, że uda mi się zhakować powstały plik XML i ponownie go zaimportować, ale podejrzewam, że skrypt PowerShell jest w twojej przyszłości.Nie jest tak źle. Możesz wygenerować listę drukarek z najbliższego serwera, a następnie wykonać pętlę i zmapować je.
Coś takiego:
Jeśli drukarki są nazywane logicznymi rzeczami i istnieje jakiś logiczny sposób na identyfikację maszyn, być może będziesz w stanie je udoskonalić. Na przykład wybrałem najbliższy serwer na podstawie pobrania adresu IP klienta. Jeśli adres IP to 10.20. *, Przejdź do server1. Itp.
Mam nadzieję że to pomogło.
Edytować:
Patrząc na dokumentację @ EvanAnderson, jestem prawie pewien, że XML można zhakować.
Odpowiedni fragment mojego wyeksportowanego pliku (z redakcjami):
źródło
Zdaniem Powershell zarządzanie zasadami grupy jest do bani bez produktów innych firm (komercyjnych).
Myślę, że utknąłeś w przeszukiwaniu XML (lub HTML, jeśli wolisz ) w obiektach zasad grupy, aby robić to, czego szukasz.
Na szczęście XML nie wygląda tak przerażająco . Wartość identyfikatora UID dla drukarki (do której, jak sądzę, odnosi się @KatherineVillyard w swoim komentarzu), jest po prostu losowym identyfikatorem GUID generowanym dla każdej drukarki wymienionej w pliku XML.
Oto przykładowy kod Powershell, bezwstydnie wzorowany na kodzie Katherine:
(Piszę naprawdę, bardzo brzydki kod Powershell.)
Tak naprawdę nie próbowałem, aby GPE CSE analizowało ten XML. XML przynajmniej sprawdza poprawność.
Zaczynam myśleć o napisaniu potworności przy użyciu
Get-GPO
i analizowaniu identyfikatora GUID, aby dostać się do ścieżki systemu plików dla obiektu GPO w SYSVOL, ale biorąc pod uwagę, że muszę dziś wieczorem trochę popracować, myślę, że odejdę to ćwiczenie dla czytelnika. > uśmiech <Powinno to być jednak wysoce wykonalne.źródło
Niedawno podjąłem podobny projekt i po przeanalizowaniu dobrej starej metody wypychania GPO vs. nowszych GPP vs. skryptów, zdecydowałem się na skryptowanie całej sprawy. Nie mam pojęcia, co będzie dla Ciebie najlepsze, ale oto kilka wskazówek dla Ciebie:
Idealnie użyj klienta z nowym systemem operacyjnym (Windows 8/2012 +), aby połączyć się z serwerami wydruku i uzyskać informacje o drukarce z serwerów wydruku:
Get-Printer -computer PrintServerName
Grupy zabezpieczeń AD służą do mapowania kolejek wydruku na komputery. Powiedzmy, że masz kolejkę wydruku (zebraną z powyższego polecenia) o nazwie \ PrintServer1 \ MyColorPrinter123, utwórz grupę zabezpieczeń, np. Printer.group.PrintServer1.MyColorPrinter123 i dodaj komputery do tej grupy
W skrypcie startowym funkcja umożliwia sprawdzenie członkostwa grupy w komputerze, gdy się zbliża, i sprawdzenie, czy należy on do jakiejkolwiek grupy drukarek. Jeśli tak, użyj wbudowanych poleceń printui.exe (lub printui.dll), aby zmapować drukarkę w ten sposób
Wywołanie wyrażenia „rundll32 printui.dll, PrintUIEntry / ga / n” \ PrintServer1 \ MyColorPrinter123 ”/ q”
Gdy komputer się uruchomi, ta usługa buforowania wydruku przekaże „połączenie drukowania”, tak jak to robią obiekty GPO, każdemu użytkownikowi, który się zaloguje.
Możesz przejść o wiele bardziej szczegółowo **, ale na wysokim poziomie to wystarczy.
** Stworzyłem GUI, który pozwala użytkownikom (naprawdę technikom) wybrać dowolny serwer wydruku i daje im listę drukarek na tym serwerze. Jeśli wybiorą jedną, zobaczą wszystkie jej właściwości. Te informacje pochodzą z wyżej wymienionej drukarki Get-Printer. Jeśli wyeksportujesz te dane jako plik csv, możesz ponownie użyć ich do wyświetlenia informacji.
** Technicy używają tego GUI do wysyłania żądania dodania komputera do drukarek, które mają się połączyć. To jest „żądanie”, ponieważ nie mają uprawnień w AD.
** Prosty skrypt zaplecza obserwuje folder i dodaje komputer do wyżej wymienionej grupy drukarek. Tak więc, jeśli już wiesz, kto powinien wybrać drukarkę, świetnie, możesz to łatwo zrobić. Dodawanie komputerów do grup to proste zadanie z poleceniami cmdlet AD.
** Możesz również zaplanować zadanie, aby sprawdzić serwery wydruku, aby sprawdzić, czy są jakieś nowe kolejki wydruku i porównać je z grupami AD.
Tak więc tworzenie „zarządzanego” rozwiązania jest trochę skomplikowane, ale łatwo jest zacząć od podstaw i dodawać, aby uzyskać bardzo elastyczny, łatwy w użyciu system, który nie wymaga GPO ... tylko trochę PowerShell
źródło