Pour des raisons indépendantes de ma volonté, j'ai été chargé de configurer des GPO / GPP pour déployer nos 100+ imprimantes sur nos 1000+ clients.
La bonne nouvelle est que nous avons plus d'une douzaine de sites, et pour la plupart, je suis autorisé à déplacer toutes les imprimantes du site X vers tous les PC clients du site X.
La mauvaise nouvelle est que les deux façons dont je sais le faire ( "Déployer avec la stratégie de groupe ...", à partir du serveur d'impression " et utiliser les préférences de stratégie de groupe / GPP ) impliquent beaucoup plus de travail manuel que je ne le souhaite. autant d'imprimantes. Je n'arrive même pas à sélectionner toutes les imprimantes sur un serveur d'impression et à utiliser l' Deploy with Group Policy...
option, par exemple - il s'attend à ce que je le fasse une par une, ce qui ne va pas se produire. Les GPP sont encore pires , car il s'attend à ce que je sélectionne le chemin d'une imprimante à partir du serveur d'impression, puis que je saisisse manuellement un tas d'informations (telles que l'adresse IP de l'imprimante) qu'il devrait pouvoir obtenir à partir de la connexion de l'imprimante.
Mon Google-Fu pour un script pour ajouter toutes les imprimantes sur un serveur d'impression à un GPO / GPP est apparu vide, et je n'arrive pas à voir une autre façon de le faire, même de manière semi-automatisée, mais je m'en tiens avec la conviction que je manque quelque chose, car il n'y a aucun moyen qu'une personne sensée choisisse d'ajouter manuellement des centaines d'imprimantes dans les GPO.
Idéalement, je voudrais trouver un moyen programmatique d'utiliser les GPP, mais dans les circonstances, toute solution qui n'implique pas des dizaines d'heures d'ajout manuel d'imprimantes serait tout simplement géniale.
Quelqu'un a-t-il un moyen de le faire, ou vais-je avoir besoin de créer un script PowerShell et / ou d'inciter un subordonné à le faire?
la source
$GPM = New-Object -ComObject GPMgmt.Gpm
. Je pense que cette interface, tout en étant un cochon absolu avec lequel travailler, pourrait vous fournir une méthode légèrement plus supportable que de simplement pirater du XML qui ressemble à un vrai GPO. Mais personne n'aime COM. Le moins que nous, Powershellers.Réponses:
J'ai googlé assez fort, et même joué avec
backup-GPO
dans l'espoir de pouvoir pirater le fichier XML résultant et le réimporter, mais je soupçonne qu'un script PowerShell est dans votre avenir.C'est pas si mal. Vous pouvez générer la liste des imprimantes à partir du serveur le plus proche, puis la parcourir et les mapper.
Quelque chose comme ça:
Si les imprimantes sont nommées choses logiques et qu'il existe un moyen logique d'identifier les machines, vous pourrez peut-être les affiner davantage. J'ai utilisé pour choisir le serveur le plus proche en fonction de l'extraction de l'adresse IP du client, par exemple. Si l'adresse IP est 10.20. *, Accédez à server1. Etc.
J'espère que ça aide.
Éditer:
En regardant la documentation de @ EvanAnderson, je suis presque sûr que XML est piratable.
Bit pertinent de mon fichier exporté (avec expurgations):
la source
À mon avis, la gestion Powershell de la stratégie de groupe est nulle sans produits tiers (commerciaux).
Je pense que vous êtes coincé dans le XML (ou en HTML si vous préférez ) dans les objets de stratégie de groupe pour faire ce que vous recherchez.
Heureusement, le XML n'a pas l'air si terrifiant . La valeur UID par imprimante (à laquelle je crois que @KatherineVillyard fait référence dans son commentaire) n'est qu'un GUID aléatoire généré pour chaque imprimante référencée dans le XML.
Voici un exemple de code Powershell, modélisé sans vergogne sur le code de Katherine:
(J'écris du code Powershell vraiment, vraiment moche.)
Je n'ai pas réellement essayé de faire analyser le XML par le GPP CSE. Le XML valide au moins.
Je commence à penser à écrire de la monstruosité en utilisant
Get-GPO
et en analysant le GUID pour accéder au chemin du système de fichiers pour le GPO dans le SYSVOL mais, étant donné que j'ai besoin de faire un vrai travail ce soir, je pense que je vais partir cela comme un exercice pour le lecteur. > sourire <Cela devrait être hautement réalisable, cependant.la source
J'ai récemment entrepris un projet similaire et après avoir étudié la bonne méthode de poussée des GPO par rapport aux nouveaux GPP et aux scripts, j'ai choisi de créer des scripts pour le tout. Je n'ai aucune idée de ce qui fonctionnerait le mieux pour vous, mais voici quelques pointeurs pour vous:
Utilisez idéalement un client avec un nouveau système d'exploitation (Windows 8/2012 +) pour vous connecter aux serveurs d'impression et obtenir des informations sur l'imprimante à partir des serveurs d'impression:
Get-Printer -computer PrintServerName
Utilisez les groupes de sécurité AD pour mapper les files d'attente d'impression aux ordinateurs. Supposons donc que vous ayez une file d'attente d'impression (que vous avez collectée à partir de la commande ci-dessus) nommée \ PrintServer1 \ MyColorPrinter123, créez un groupe de sécurité comme printer.group.PrintServer1.MyColorPrinter123 et ajoutez les ordinateurs à ce groupe
Dans le script de démarrage, disposez d'une fonction pour vérifier l'appartenance au groupe de l'ordinateur lors de son démarrage et voir s'il fait partie d'un groupe d'imprimantes. Si tel est le cas, utilisez les commandes intégrées printui.exe (ou printui.dll) pour mapper l'imprimante comme ceci
Invoke-Expression 'rundll32 printui.dll, PrintUIEntry / ga / n "\ PrintServer1 \ MyColorPrinter123" / q'
Une fois que l'ordinateur est en marche, ce service de spouleur d'impression poussera la «connexion d'impression», ce que les GPO faisaient autrefois, vers tout utilisateur qui se connectera.
Vous pouvez aller beaucoup plus en détail ** mais à un niveau élevé c'est ce qu'il faut.
** J'ai créé une interface graphique qui permet aux utilisateurs (vraiment aux techniciens) de choisir n'importe quel serveur d'impression et leur donne la liste des imprimantes sur ce serveur. S'ils en choisissent un, ils peuvent en voir toutes les propriétés. Ces informations proviennent de Get-Printer que j'ai mentionné ci-dessus. Si vous exportez ces données au format csv, vous pouvez ensuite les réutiliser pour afficher des informations.
** Les techniciens utilisent cette interface graphique pour envoyer une demande d'ajout d'un ordinateur aux imprimantes qu'il est censé connecter. Il s'agit d'une «demande», car ils n'ont pas d'autorisations dans AD.
** Un simple script backend surveille le dossier et ajoute l'ordinateur au groupe d'imprimantes que j'ai mentionné ci-dessus. Donc, si vous savez déjà qui devrait obtenir quelle imprimante, tant mieux, vous pouvez facilement le faire. L'ajout d'ordinateurs à des groupes est une tâche simple avec les applets de commande AD.
** Vous pouvez également planifier un travail pour vérifier les serveurs d'impression pour voir s'il y a de nouvelles files d'attente d'impression et les comparer à vos groupes AD.
Donc, créer une solution «gérée» est un peu compliqué, mais il est facile de commencer par les bases et de continuer à ajouter pour avoir un système très flexible et facile à utiliser qui n'implique pas de GPO ... juste un peu PowerShell
la source