{"version":"1.1","schema_version":"1.1.0","plugin_version":"1.1.2","url":"https://tutos-gameserver.fr/2019/10/12/audits-du-serveur-dimpression-nombre-dimpressions-effectuees-par-personne-par-mois-serveur-dimpression/","llm_html_url":"https://tutos-gameserver.fr/2019/10/12/audits-du-serveur-dimpression-nombre-dimpressions-effectuees-par-personne-par-mois-serveur-dimpression/llm","llm_json_url":"https://tutos-gameserver.fr/2019/10/12/audits-du-serveur-dimpression-nombre-dimpressions-effectuees-par-personne-par-mois-serveur-dimpression/llm.json","manifest_url":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","language":"fr-FR","locale":"fr_FR","title":"Audits du serveur d&#39;impression (nombre d&#39;impressions effectuées par personne par mois)\n &#8211; Serveur d&rsquo;impression","site":{"name":"Tutos GameServer","url":"https://tutos-gameserver.fr/"},"author":{"id":1,"name":"Titanfall","url":"https://tutos-gameserver.fr/author/titanfall/"},"published_at":"2019-10-12T04:14:26+00:00","modified_at":"2019-10-12T04:14:26+00:00","word_count":2670,"reading_time_seconds":801,"summary":"Voici le code tel que je l’ai actuellement mis en place. D&#39;après ce que je peux dire, tous les prérequis sont terminés et je veux que les fichiers CSV soient exportés vers le dossier D: Scripts tels que je les ai déjà en place. Le fichier .ps1 est situé dans D: Scripts &lt;# GeneratePrintJobAccountingReports.ps1 ver. [&hellip;]","summary_points":["Voici le code tel que je l’ai actuellement mis en place.","D&#39;après ce que je peux dire, tous les prérequis sont terminés et je veux que les fichiers CSV soient exportés vers le dossier D:  Scripts tels que je les ai déjà en place.","Le fichier .ps1 est situé dans D:  Scripts\n&lt;#\nGeneratePrintJobAccountingReports.ps1\nver.","2014-09-26-01\nCe script lit les journaux d&#39;événements ID 307 et 805 dans le journal &quot;Journaux des applications et des services&gt; Microsoft&gt; Windows&gt; PrintService&quot;."],"topics":["Serveur d'impression"],"entities":[],"entities_metadata":[{"id":10,"name":"Serveur d'impression","slug":"serveur-dimpression","taxonomy":"category","count":3907,"url":"https://tutos-gameserver.fr/category/serveur-dimpression/"}],"tags":["Serveur d'impression"],"content_hash":"fd2da6d7ad8e0b51770c5d39141bd9cb","plain_text":"Voici le code tel que je l’ai actuellement mis en place. D&#39;après ce que je peux dire, tous les prérequis sont terminés et je veux que les fichiers CSV soient exportés vers le dossier D:  Scripts tels que je les ai déjà en place. Le fichier .ps1 est situé dans D:  Scripts\n&lt;#\nGeneratePrintJobAccountingReports.ps1\nver. 2014-09-26-01\nCe script lit les journaux d&#39;événements ID 307 et 805 dans le journal &quot;Journaux des applications et des services&gt; Microsoft&gt; Windows&gt; PrintService&quot;.\nà partir du serveur spécifié et pour la période spécifiée, puis calcule les données du travail d&#39;impression et du nombre total de pages à partir de ces données.\n\nentrées du journal des événements.\nIl écrit ensuite la sortie dans deux fichiers .CSV, l&#39;un montrant les données des travaux d&#39;impression par impression et l&#39;autre, les données des travaux d&#39;impression par utilisateur.\nLe script dépend des données et du texte spécifiques du journal des événements dans les enregistrements 307 et 805 du journal des événements et a été testé uniquement sur\n\nWindows Server 2008 R2 avec SP1.\nExigences:\n&#8211; Assurez-vous que .NET Framework 3.5 ou version ultérieure est installé:\n  &#8211; Ajoutez &quot;.NET Framework 3.5.1&quot; sous l&#39;option &quot;.NET Framework 3.5.1 Features&quot; à l&#39;aide de l&#39;option &quot;Ajouter des fonctionnalités&quot; du Gestionnaire de serveur, ou\n\n  &#8211; Tous les programmes&gt; Accessoires&gt; Windows PowerShell&gt; cliquez avec le bouton droit de la souris sur Windows PowerShell&gt; Exécuter en tant qu&#39;administrateur &#8230;\n    Module d&#39;importation ServerManager\n    Ajouter-WindowsFeature NET-Framework-Core\n&#8211; Activer et configurer la journalisation des événements des travaux d&#39;impression sur le serveur d&#39;impression souhaité:\n  &#8211; démarrez Périphériques et imprimantes&gt; (surlignez toutes les imprimantes)&gt; Propriétés du serveur d&#39;impression&gt; Avancé\n    &#8211; cocher &quot;Afficher les notifications d&#39;information pour les imprimantes locales&quot;\n    &#8211; cochez la case &quot;Afficher les notifications d&#39;information pour les imprimantes réseau&quot;\n      &#8211; D&#39;ACCORD\n  &#8211; démarrez l&#39;Observateur d&#39;événements&gt; Journaux des applications et des services&gt; Microsoft&gt; Windows&gt; PrintService\n\n    &#8211; cliquez avec le bouton droit de la souris sur Opérationnel&gt; Activer le journal\n    &#8211; cliquez avec le bouton droit de la souris sur Opérationnel&gt; Propriétés&gt; Taille maximale du journal (Ko): 65536 (1028 Ko par défaut)\n      &#8211; D&#39;ACCORD\n&#8211; Assurez-vous que le compte d&#39;utilisateur utilisé pour exécuter le script dispose d&#39;une autorisation d&#39;écriture sur le répertoire de destination qui contiendra le\n  fichiers de sortie .CSV (&quot;D:  Scripts &quot; dans le code ci-dessous). Modifiez les chemins et les noms de fichiers .CSV dans le code ci-dessous, selon vos besoins.\n&#8211; Si le serveur d&#39;impression est un serveur distant, vérifiez que le compte d&#39;utilisateur utilisé pour exécuter le script dispose d&#39;un appel de procédure à distance.\n\n  accès réseau au nom d’hôte spécifié et que les règles de pare-feu autorisent un tel accès au réseau.\n&#8211; Si le serveur d&#39;impression enregistre les événements dans une langue autre que l&#39;anglais, personnalisez la chaîne de recherche du message ID 805 ci-dessous.\n  pour correspondre à la chaîne appropriée à la langue utilisée dans le message du journal des événements ID 805 du serveur d&#39;impression.\nUsage:\n&#8211; voir la fonction PrintCommandLineUsage ci-dessous\nCodes de sortie:\n&#8211; errorlevel 0 indique aucune erreur (des enregistrements ont été trouvés et générés, ou aucun enregistrement n&#39;a été trouvé)\n&#8211; errorlevel 1 indique une erreur (paramètres de ligne de commande imparables ou enregistrements de journal d&#39;événements ID 805 manquants)\nNotes d&#39;implémentation:\n&#8211; Cas d&#39;une imprimante HP LaserJet P2055dn utilisant le pilote HP Universal Printing PCL 5 (v5.2)\n    L’imprimante enregistre 0 copie pour tous les travaux.\n    Si un script indiquant un nombre de copies égal à 0 est visualisé par le script, un avertissement est généré, puis le fichier affecté est considéré.\n\n      tâche d&#39;impression à imprimer avec 1 copie pour deviner le nombre réel de copies.\n    Dans ce cas particulier, le correctif consistait à mettre à niveau le pilote d&#39;imprimante vers le pilote HP Universal Printing PCL 5 (v5.5.0).\n&#8211; Cas d’une imprimante couleur HP LaserJet Pro 400, modèle M451dn (CE957A), utilisant le pilote HP Universal Printing PCL 6 (v5.0.3),\n\n  le pilote HP Universal Printing PCL 5 (v5.2) et le pilote HP Universal Printing PS (v.5.0.3):\n    Dans tous les cas, cette imprimante enregistre 1 copie de tous les travaux dans l&#39;ID d&#39;événement 805, même lorsque l&#39;utilisateur imprime plus d&#39;une copie du travail.\n\n    Le script ne détecte aucun problème. Il a été découvert par observation.\n    Le correctif consistait à effacer le paramètre &quot;Partage&gt; Rendu des travaux d&#39;impression sur les ordinateurs clients&quot; des propriétés de l&#39;imprimante (&quot;activé&quot; par défaut).\n\n    Avec cette modification, le nombre de copies par travail a été signalé avec précision dans le journal des événements Windows.\n    SUGGESTION: Consultez le fichier .CSV généré le premier mois et recherchez les imprimantes ne signalant qu&#39;une seule copie de toutes les tâches. Celles-ci\n      les imprimantes peuvent avoir besoin de la solution de contournement pour être restituées côté serveur.\nHistoire:\n&#8211; 2010-02 Script original écrit par Sh_Con à \nhttp://social.technet.microsoft.com/Forums/en-US/ITCG/thread/007be664-1d8d-461c-9e0b-d8177106d4f8\n&#8211; 2011-05 Modifié par BSOD2600 à \nhttp://social.technet.microsoft.com/Forums/en-US/ITCG/thread/007be664-1d8d-461c-9e0b-d8177106d4f8\n&#8211; 2011-10 Modifié par Tim Miller Dyck de PeaceWorks Technology Solutions pour inclure le nombre de copies dans la comptabilisation de page par corrélation avec\n\n    ID d&#39;événement 805, ajout des paramètres de nom d&#39;hôte et de date du serveur d&#39;impression cible, ajout du rapport de total des pages par utilisateur et du codage du commutateur à partir de\n    Unicode vers ASCII pour une meilleure compatibilité Excel .CSV.\n    Merci au Comité central mennonite du Canada d’avoir parrainé ce développement supplémentaire.\n&#8211; 2012-09 Modifié par Tim Miller Dyck de PeaceWorks Technology Solutions pour inclure un avertissement concernant les travaux d&#39;impression ne rapportant aucun exemplaire,\n\n    ajouter un avertissement concernant certains travaux d&#39;impression rapportant de manière incorrecte une copie lorsque plusieurs copies ont été imprimées, ajoutez le numéro d&#39;identification du travail d&#39;impression\n\n    dans la sortie .CSV et remplacez les virgules dans le nom du travail d&#39;impression par des soulignés pour une analyse plus fiable des fichiers .CSV avec certains clients.\n&#8211; 2014-09 Modifié par Tim Miller Dyck de PeaceWorks Technology Solutions pour ajouter une journalisation des alertes et une robustesse supplémentaires dans de rares cas où\n    Les messages d&#39;événement ID 805 sont enregistrés soit 0, soit plus d&#39;une fois, pour le même travail d&#39;impression; ajouter la gestion des caractères de nom de document non valide et PreviousDay\n\n    améliorations suggérées par les commentateurs à \nhttp://gallery.technet.microsoft.com/scriptcenter/Script-to-generate-print-84bdcf69/view/Discussions#content\n#&gt;\n#####\n# exécuté en mode strict version 2 pour intercepter des variables initialisées et des propriétés / fonctions inexistantes\nSet-StrictMode -version 2\n#####\n# définir les variables initiales\n$ PrintJobCounter = 1 # compteur de sortie d&#39;affichage de la console\n$ PerUserTotalPagesRecords = @  # crée une table de hachage vide\n#####\n# déclarer des fonctions auxiliaires\n# fonction pour imprimer les données d&#39;utilisation sur la console\nFonction PrintCommandLineUsage \n    Write-Host &quot;\nVoici les paramètres du script:\n  (nom d&#39;hôte) PreviousMonth &#8211; Récupère les données de travail d&#39;impression de (nom d&#39;hôte) en fonction de\n                              tout le mois précédent.\n    ou\n  (nom d&#39;hôte) PreviousDay &#8211; Récupère les données de travail d&#39;impression de (nom d&#39;hôte) en fonction de\n                            toute la journée précédente.\n    ou\n  (hostname) (startdate) (enddate) &#8211; Récupère les données de travail d&#39;impression de (hostname)\n                                      basé sur le début et la fin spécifiés\n                                      Rendez-vous. La date doit être spécifiée\n dans un \n                                      format qui correspond au système actuel\n\n                                      locale (par exemple, MM / jj / aaaa pour United\n États).\nExemples:\n  powershell.exe -commande `&quot;.  GeneratePrintJobAccountingReports.ps1 localhost PreviousMonth` &quot;\n  powershell.exe &#8211; commande `&quot;.  GeneratePrintJobAccountingReports.ps1 printserver.domain.local 08/01/2014 08/02 / 2014` &quot;\n&quot;\n\n#####\n# analyser les paramètres de ligne de commande\nswitch ($ args.count) \n    ($ _ -eq 2) -or ($ __eq 3) \n        # s&#39;il y a deux ou trois paramètres, le premier paramètre est le nom d&#39;hôte du serveur d&#39;impression à partir duquel les journaux des événements seront extraits\n        $ PrintServerName = $ args[0]\n        Write-Host &quot;Nom d&#39;hôte du serveur d&#39;impression à interroger:&quot; $ PrintServerName\n    2 \n        # s&#39;il y a exactement deux paramètres, vérifiez que le second est &quot;PreviousMonth&quot; ou &quot;PreviousDay&quot; (en utilisant la comparaison par défaut sans distinction de casse)\n        si ($ args[1].CompareTo (&quot;PreviousMonth&quot;) -eq 0) \n            # l&#39;heure de début est au début (00:00:00) du premier jour du mois précédent\n            $ StartDate = (Get-Date-Day 1 -Hour 0 -Minute 0 -Second 0) .AddMonths (-1)\n            # l&#39;heure de fin est à la fin (23:59:59) du dernier jour du mois précédent\n            $ EndDate = (Get-Date &#8211; Jour 1 &#8211; Heure 0 &#8211; Minute 0 &#8211; Seconde 0) &#8211; (New-Timespan &#8211; Seconde 1)\n        elseif ($ args[1].CompareTo (&quot;PreviousDay&quot;) -eq 0) \n            # l&#39;heure de début est au début (00:00:00) du jour précédent\n            $ StartDate = (Get-Date -Hour 0 -Minute 0 -Second 0) .AddDays (-1)\n            # l&#39;heure de fin est à la fin (23:59:59) du jour précédent\n            $ EndDate = (Get-Date -Hour 23 &#8211; Minute 59 &#8211; Seconde 59) .AddDays (-1)\n        autre \n            # il y avait un paramètre de ligne de commande non reconnu, donc imprimez les données d&#39;utilisation et quittez avec errorlevel 1\n            Write-Host &quot;` nERROR: Deux paramètres de ligne de commande ont été détectés, mais le deuxième paramètre de ligne de commande n&#39;était pas `&quot; PreviousMonth` &quot;ou` &quot;PreviousDay`&quot;. &quot;\n            PrintCommandLineUsage\n            Sortie 1\n\n    3 \n        # s&#39;il y a exactement trois paramètres, vérifiez que les deuxième et troisième sont des dates\n        # définit la gestion des erreurs pour continuer silencieusement car les erreurs sont vérifiées explicitement\n        $ ErrorActionPreference = &quot;SilentlyContinue&quot;\n        # l&#39;heure de début est au début de la date indiquée (12:00:00 AM)\n        $ StartDate = Get-Date -Date $ args[1]\n        # vérifie si le paramètre de ligne de commande a été reconnu comme une date valide\n        si (! $?) \n            # il y avait un paramètre de ligne de commande non reconnu, donc imprimez les données d&#39;utilisation et quittez avec errorlevel 1\n            Write-Host &quot;` nERROR: Trois paramètres de ligne de commande ont été détectés, mais le deuxième paramètre de ligne de commande n&#39;était pas une date valide. &quot;\n            PrintCommandLineUsage\n            Sortie 1\n        # l&#39;heure de fin est à la fin de la date indiquée (23:59:59) &#8211; ajoutez un jour puis soustrayez une seconde\n        $ EndDate = (Get-Date -Date $ args[2]) + (New-Timespan &#8211; Jour 1) &#8211; (New-Timespan &#8211; Deuxième 1)\n        # vérifie si le paramètre de ligne de commande a été reconnu comme une date valide\n        si (! $?) \n            # il y avait un paramètre de ligne de commande non reconnu, donc imprimez les données d&#39;utilisation et quittez avec errorlevel 1\n            Write-Host &quot;` nERROR: Trois paramètres de ligne de commande ont été détectés, mais le troisième paramètre de ligne de commande n&#39;était pas une date valide. &quot;\n            PrintCommandLineUsage\n            Sortie 1\n        # redéfinit le traitement des erreurs par défaut\n        $ ErrorActionPreference = &quot;Continuer&quot;\n    défaut \n        # il n&#39;y a pas ou trop de paramètres de ligne de commande présents, donc imprimez les données d&#39;utilisation et quittez avec errorlevel 1\n        Write-Host &quot;` nERROR: Aucun ou trop de paramètres de ligne de commande n&#39;ont été détectés. &quot;\n        PrintCommandLineUsage\n        Sortie 1\n#####\n# définir les noms de fichiers de sortie .CSV\n$ OutputFilenameByPrintJob = &quot;D:  Scripts  Rapport de comptabilisation des travaux d&#39;impression par travail d&#39;impression pour l&#39;hôte du serveur d&#39;impression&quot; + $ PrintServerName + &quot;-&quot; + $ StartDate.ToString (&quot;aaaa-MM-jj&quot;) + &quot;à&quot; + $ EndDate. ToString (&quot;aaaa-MM-jj&quot;)\n + &quot;.csv&quot; # entrez le nom du fichier de sortie souhaité\n$ OutputFilenameByUser = &quot;D:  Scripts  Rapport de comptabilisation des travaux d&#39;impression par utilisateur pour l&#39;hôte du serveur d&#39;impression&quot; + $ PrintServerName + &quot;-&quot; + $ StartDate.ToString (&quot;aaaa-MM-jj&quot;) + &quot;à&quot; + $ EndDate.ToString (&quot;aaaa-MM-jj&quot;)\n + &quot;.csv&quot; # entrez le nom du fichier de sortie souhaité\n#####\n# obtenir les entrées du journal des événements ID 307 et 805\n# afficher le message d&#39;état\nWrite-Host &quot;La collecte des journaux d&#39;événements trouvés dans l&#39;intervalle de temps spécifié va de $ StartDate à $ EndDate.&quot;\n# les entrées de travail d&#39;impression principales sont l&#39;ID d&#39;événement 307 (utilisez &quot;-ErrorAction SilentlyContinue&quot; pour gérer le cas où aucun message du journal des événements n&#39;a été trouvé).\n$ PrintEntries = Get-WinEvent -ErrorAction SilentlyContinue-ComputerName $ PrintServerName -FilterHashTable @ ProviderName = &quot;Microsoft-Windows-PrintService&quot;; StartTime = $ StartDate; EndTime = $ EndDate; ID = 307\n# le nombre de copies correspondant au travail est dans l&#39;ID d&#39;événement 805 (utilisez &quot;-ErrorAction SilentlyContinue&quot; pour traiter le cas où aucun message du journal des événements n&#39;a été trouvé)\n$ PrintEntriesNumberofCopies = Get-WinEvent -ErrorAction SilentlyContinue -ComputerName $ PrintServerName -FilterHashTable @ ProviderName = &quot;Microsoft-Windows-PrintService&quot;; StartTime = $ StartDate; EndTime = $ EndDate; ID = 805\n# vérifier les données trouvées; si aucun enregistrement ID de journal des événements 307 n&#39;a été trouvé, quittez le script sans créer de fichier de sortie (il ne s&#39;agit pas d&#39;une condition d&#39;erreur)\nsi (! $ PrintEntries) \n    Write-Host &quot;Aucun ID d&#39;événement de travail d&#39;impression 307 entrées trouvées dans la plage de temps spécifiée va de $ StartDate à $ EndDate. Script de sortie.&quot;\n    Sortie\n\n# sinon, affiche le nombre d&#39;enregistrements trouvés et continue\n# Measure-Object est nécessaire pour gérer le cas où exactement une entrée de journal d&#39;événements est renvoyée.\nWrite-Host &quot;Nombre d&#39;ID d&#39;événement de travail d&#39;impression 307 entrées trouvées:&quot; ($ PrintEntries | Measure-Object) .Count\nWrite-Host &quot;Nombre d&#39;ID d&#39;événement de travail d&#39;impression 805 entrées trouvées:&quot; ($ PrintEntriesNumberofCopies | Measure-Object) .Count\n# afficher le message d&#39;état\nWrite-Host &quot;Analyse les entrées du journal des événements et écrit les données dans le fichier de sortie .CSV du travail d&#39;impression auxiliaire` &quot;$ OutputFilenameByPrintJob`&quot; &#8230; &quot;\n# écrit l&#39;en-tête initial dans le fichier de sortie du job\nWrite-Output &quot;Date, ID du travail d&#39;impression, nom d&#39;utilisateur, nom complet, nom de l&#39;ordinateur client, nom de l&#39;imprimante, nom du document, taille du travail d&#39;impression en octets, nombre de pages pour une copie, nombre de copies, nombre total de pages&quot; | Out-File -FilePath $ OutputFilenameByPrintJob -Encoding ASCII\n#####\n# boucle pour analyser les entrées du journal des événements ID 307\nForEach ($ PrintEntry in $ PrintEntries)  Out-File -FilePath $ OutputFilenameByPrintJob -Encoding ASCII -Append\n    # mettre à jour le nombre total de pages du travail de l&#39;utilisateur\n    $ UserNameKey = &quot;` &quot;$ UserName ($ ADName)` &quot;&quot;\n    # si l&#39;utilisateur n&#39;est pas encore dans la table de hachage, ajoutez-les et leur nombre total de pages initial\n    if (! $ PerUserTotalPagesRecords.ContainsKey ($ UserNameKey)) \n        $ PerUserTotalPagesRecords.Add ($ UserNameKey, $ TotalPages)\n    # si l&#39;utilisateur est déjà dans la table de hachage, met à jour le nombre total de pages\n    autre \n        $ PerUserTotalPagesRecords.Set_Item ($ UserNameKey, $ PerUserTotalPagesRecords.Get_Item ($ UserNameKey) + $ TotalPages)\n\n    # afficher le message d&#39;état\n    Write-Host &quot;Traitement du travail d&#39;impression $ PrintJobCounter (ID du travail $ PrintJobId imprimé à $ StartDate_Time).&quot;\n    $ PrintJobCounter ++\n\n#####\n# faire la comptabilité de travail par utilisateur\n# afficher le message d&#39;état\nWrite-Host &quot;Écriture de données dans le fichier de sortie .CSV par utilisateur` &quot;$ OutputFilenameByUser`&quot; &#8230; &quot;\n# écrit l&#39;en-tête initial dans le fichier de sortie par utilisateur\nWrite-Output &quot;Nom d&#39;utilisateur (Nom complet), Nombre total de pages&quot; | Out-File -FilePath $ OutputFilenameByUser -Encoding ASCII\n# écrit la sortie dans le fichier de sortie par utilisateur dans un ordre trié alphabétiquement par nom d&#39;utilisateur\nForEach ($ PerUserTotalPagesRecordsKey in ($ PerUserTotalPagesRecords.Keys | sort))  Out-File -FilePath $ OutputFilenameByUser -Encoding ASCII -Append\n\n#####\n# quitter\nWrite-Host &quot;Terminé.&quot;\n\n\nClick to rate this post!\r\n                                   \r\n                               [Total: 0  Average: 0]","paragraphs":["Voici le code tel que je l’ai actuellement mis en place. D&#39;après ce que je peux dire, tous les prérequis sont terminés et je veux que les fichiers CSV soient exportés vers le dossier D:  Scripts tels que je les ai déjà en place. Le fichier .ps1 est situé dans D:  Scripts\n&lt;#\nGeneratePrintJobAccountingReports.ps1\nver. 2014-09-26-01\nCe script lit les journaux d&#39;événements ID 307 et 805 dans le journal &quot;Journaux des applications et des services&gt; Microsoft&gt; Windows&gt; PrintService&quot;.\nà partir du serveur spécifié et pour la période spécifiée, puis calcule les données du travail d&#39;impression et du nombre total de pages à partir de ces données.","entrées du journal des événements.\nIl écrit ensuite la sortie dans deux fichiers .CSV, l&#39;un montrant les données des travaux d&#39;impression par impression et l&#39;autre, les données des travaux d&#39;impression par utilisateur.\nLe script dépend des données et du texte spécifiques du journal des événements dans les enregistrements 307 et 805 du journal des événements et a été testé uniquement sur","Windows Server 2008 R2 avec SP1.\nExigences:\n&#8211; Assurez-vous que .NET Framework 3.5 ou version ultérieure est installé:\n  &#8211; Ajoutez &quot;.NET Framework 3.5.1&quot; sous l&#39;option &quot;.NET Framework 3.5.1 Features&quot; à l&#39;aide de l&#39;option &quot;Ajouter des fonctionnalités&quot; du Gestionnaire de serveur, ou","&#8211; Tous les programmes&gt; Accessoires&gt; Windows PowerShell&gt; cliquez avec le bouton droit de la souris sur Windows PowerShell&gt; Exécuter en tant qu&#39;administrateur &#8230;\n    Module d&#39;importation ServerManager\n    Ajouter-WindowsFeature NET-Framework-Core\n&#8211; Activer et configurer la journalisation des événements des travaux d&#39;impression sur le serveur d&#39;impression souhaité:\n  &#8211; démarrez Périphériques et imprimantes&gt; (surlignez toutes les imprimantes)&gt; Propriétés du serveur d&#39;impression&gt; Avancé\n    &#8211; cocher &quot;Afficher les notifications d&#39;information pour les imprimantes locales&quot;\n    &#8211; cochez la case &quot;Afficher les notifications d&#39;information pour les imprimantes réseau&quot;\n      &#8211; D&#39;ACCORD\n  &#8211; démarrez l&#39;Observateur d&#39;événements&gt; Journaux des applications et des services&gt; Microsoft&gt; Windows&gt; PrintService","&#8211; cliquez avec le bouton droit de la souris sur Opérationnel&gt; Activer le journal\n    &#8211; cliquez avec le bouton droit de la souris sur Opérationnel&gt; Propriétés&gt; Taille maximale du journal (Ko): 65536 (1028 Ko par défaut)\n      &#8211; D&#39;ACCORD\n&#8211; Assurez-vous que le compte d&#39;utilisateur utilisé pour exécuter le script dispose d&#39;une autorisation d&#39;écriture sur le répertoire de destination qui contiendra le\n  fichiers de sortie .CSV (&quot;D:  Scripts &quot; dans le code ci-dessous). Modifiez les chemins et les noms de fichiers .CSV dans le code ci-dessous, selon vos besoins.\n&#8211; Si le serveur d&#39;impression est un serveur distant, vérifiez que le compte d&#39;utilisateur utilisé pour exécuter le script dispose d&#39;un appel de procédure à distance.","accès réseau au nom d’hôte spécifié et que les règles de pare-feu autorisent un tel accès au réseau.\n&#8211; Si le serveur d&#39;impression enregistre les événements dans une langue autre que l&#39;anglais, personnalisez la chaîne de recherche du message ID 805 ci-dessous.\n  pour correspondre à la chaîne appropriée à la langue utilisée dans le message du journal des événements ID 805 du serveur d&#39;impression.\nUsage:\n&#8211; voir la fonction PrintCommandLineUsage ci-dessous\nCodes de sortie:\n&#8211; errorlevel 0 indique aucune erreur (des enregistrements ont été trouvés et générés, ou aucun enregistrement n&#39;a été trouvé)\n&#8211; errorlevel 1 indique une erreur (paramètres de ligne de commande imparables ou enregistrements de journal d&#39;événements ID 805 manquants)\nNotes d&#39;implémentation:\n&#8211; Cas d&#39;une imprimante HP LaserJet P2055dn utilisant le pilote HP Universal Printing PCL 5 (v5.2)\n    L’imprimante enregistre 0 copie pour tous les travaux.\n    Si un script indiquant un nombre de copies égal à 0 est visualisé par le script, un avertissement est généré, puis le fichier affecté est considéré.","tâche d&#39;impression à imprimer avec 1 copie pour deviner le nombre réel de copies.\n    Dans ce cas particulier, le correctif consistait à mettre à niveau le pilote d&#39;imprimante vers le pilote HP Universal Printing PCL 5 (v5.5.0).\n&#8211; Cas d’une imprimante couleur HP LaserJet Pro 400, modèle M451dn (CE957A), utilisant le pilote HP Universal Printing PCL 6 (v5.0.3),","le pilote HP Universal Printing PCL 5 (v5.2) et le pilote HP Universal Printing PS (v.5.0.3):\n    Dans tous les cas, cette imprimante enregistre 1 copie de tous les travaux dans l&#39;ID d&#39;événement 805, même lorsque l&#39;utilisateur imprime plus d&#39;une copie du travail.","Le script ne détecte aucun problème. Il a été découvert par observation.\n    Le correctif consistait à effacer le paramètre &quot;Partage&gt; Rendu des travaux d&#39;impression sur les ordinateurs clients&quot; des propriétés de l&#39;imprimante (&quot;activé&quot; par défaut).","Avec cette modification, le nombre de copies par travail a été signalé avec précision dans le journal des événements Windows.\n    SUGGESTION: Consultez le fichier .CSV généré le premier mois et recherchez les imprimantes ne signalant qu&#39;une seule copie de toutes les tâches. Celles-ci\n      les imprimantes peuvent avoir besoin de la solution de contournement pour être restituées côté serveur.\nHistoire:\n&#8211; 2010-02 Script original écrit par Sh_Con à \nhttp://social.technet.microsoft.com/Forums/en-US/ITCG/thread/007be664-1d8d-461c-9e0b-d8177106d4f8\n&#8211; 2011-05 Modifié par BSOD2600 à \nhttp://social.technet.microsoft.com/Forums/en-US/ITCG/thread/007be664-1d8d-461c-9e0b-d8177106d4f8\n&#8211; 2011-10 Modifié par Tim Miller Dyck de PeaceWorks Technology Solutions pour inclure le nombre de copies dans la comptabilisation de page par corrélation avec","ID d&#39;événement 805, ajout des paramètres de nom d&#39;hôte et de date du serveur d&#39;impression cible, ajout du rapport de total des pages par utilisateur et du codage du commutateur à partir de\n    Unicode vers ASCII pour une meilleure compatibilité Excel .CSV.\n    Merci au Comité central mennonite du Canada d’avoir parrainé ce développement supplémentaire.\n&#8211; 2012-09 Modifié par Tim Miller Dyck de PeaceWorks Technology Solutions pour inclure un avertissement concernant les travaux d&#39;impression ne rapportant aucun exemplaire,","ajouter un avertissement concernant certains travaux d&#39;impression rapportant de manière incorrecte une copie lorsque plusieurs copies ont été imprimées, ajoutez le numéro d&#39;identification du travail d&#39;impression","dans la sortie .CSV et remplacez les virgules dans le nom du travail d&#39;impression par des soulignés pour une analyse plus fiable des fichiers .CSV avec certains clients.\n&#8211; 2014-09 Modifié par Tim Miller Dyck de PeaceWorks Technology Solutions pour ajouter une journalisation des alertes et une robustesse supplémentaires dans de rares cas où\n    Les messages d&#39;événement ID 805 sont enregistrés soit 0, soit plus d&#39;une fois, pour le même travail d&#39;impression; ajouter la gestion des caractères de nom de document non valide et PreviousDay","améliorations suggérées par les commentateurs à \nhttp://gallery.technet.microsoft.com/scriptcenter/Script-to-generate-print-84bdcf69/view/Discussions#content\n#&gt;\n#####\n# exécuté en mode strict version 2 pour intercepter des variables initialisées et des propriétés / fonctions inexistantes\nSet-StrictMode -version 2\n#####\n# définir les variables initiales\n$ PrintJobCounter = 1 # compteur de sortie d&#39;affichage de la console\n$ PerUserTotalPagesRecords = @  # crée une table de hachage vide\n#####\n# déclarer des fonctions auxiliaires\n# fonction pour imprimer les données d&#39;utilisation sur la console\nFonction PrintCommandLineUsage \n    Write-Host &quot;\nVoici les paramètres du script:\n  (nom d&#39;hôte) PreviousMonth &#8211; Récupère les données de travail d&#39;impression de (nom d&#39;hôte) en fonction de\n                              tout le mois précédent.\n    ou\n  (nom d&#39;hôte) PreviousDay &#8211; Récupère les données de travail d&#39;impression de (nom d&#39;hôte) en fonction de\n                            toute la journée précédente.\n    ou\n  (hostname) (startdate) (enddate) &#8211; Récupère les données de travail d&#39;impression de (hostname)\n                                      basé sur le début et la fin spécifiés\n                                      Rendez-vous. La date doit être spécifiée\n dans un \n                                      format qui correspond au système actuel","locale (par exemple, MM / jj / aaaa pour United\n États).\nExemples:\n  powershell.exe -commande `&quot;.  GeneratePrintJobAccountingReports.ps1 localhost PreviousMonth` &quot;\n  powershell.exe &#8211; commande `&quot;.  GeneratePrintJobAccountingReports.ps1 printserver.domain.local 08/01/2014 08/02 / 2014` &quot;\n&quot;","#####\n# analyser les paramètres de ligne de commande\nswitch ($ args.count) \n    ($ _ -eq 2) -or ($ __eq 3) \n        # s&#39;il y a deux ou trois paramètres, le premier paramètre est le nom d&#39;hôte du serveur d&#39;impression à partir duquel les journaux des événements seront extraits\n        $ PrintServerName = $ args[0]\n        Write-Host &quot;Nom d&#39;hôte du serveur d&#39;impression à interroger:&quot; $ PrintServerName\n    2 \n        # s&#39;il y a exactement deux paramètres, vérifiez que le second est &quot;PreviousMonth&quot; ou &quot;PreviousDay&quot; (en utilisant la comparaison par défaut sans distinction de casse)\n        si ($ args[1].CompareTo (&quot;PreviousMonth&quot;) -eq 0) \n            # l&#39;heure de début est au début (00:00:00) du premier jour du mois précédent\n            $ StartDate = (Get-Date-Day 1 -Hour 0 -Minute 0 -Second 0) .AddMonths (-1)\n            # l&#39;heure de fin est à la fin (23:59:59) du dernier jour du mois précédent\n            $ EndDate = (Get-Date &#8211; Jour 1 &#8211; Heure 0 &#8211; Minute 0 &#8211; Seconde 0) &#8211; (New-Timespan &#8211; Seconde 1)\n        elseif ($ args[1].CompareTo (&quot;PreviousDay&quot;) -eq 0) \n            # l&#39;heure de début est au début (00:00:00) du jour précédent\n            $ StartDate = (Get-Date -Hour 0 -Minute 0 -Second 0) .AddDays (-1)\n            # l&#39;heure de fin est à la fin (23:59:59) du jour précédent\n            $ EndDate = (Get-Date -Hour 23 &#8211; Minute 59 &#8211; Seconde 59) .AddDays (-1)\n        autre \n            # il y avait un paramètre de ligne de commande non reconnu, donc imprimez les données d&#39;utilisation et quittez avec errorlevel 1\n            Write-Host &quot;` nERROR: Deux paramètres de ligne de commande ont été détectés, mais le deuxième paramètre de ligne de commande n&#39;était pas `&quot; PreviousMonth` &quot;ou` &quot;PreviousDay`&quot;. &quot;\n            PrintCommandLineUsage\n            Sortie 1","3 \n        # s&#39;il y a exactement trois paramètres, vérifiez que les deuxième et troisième sont des dates\n        # définit la gestion des erreurs pour continuer silencieusement car les erreurs sont vérifiées explicitement\n        $ ErrorActionPreference = &quot;SilentlyContinue&quot;\n        # l&#39;heure de début est au début de la date indiquée (12:00:00 AM)\n        $ StartDate = Get-Date -Date $ args[1]\n        # vérifie si le paramètre de ligne de commande a été reconnu comme une date valide\n        si (! $?) \n            # il y avait un paramètre de ligne de commande non reconnu, donc imprimez les données d&#39;utilisation et quittez avec errorlevel 1\n            Write-Host &quot;` nERROR: Trois paramètres de ligne de commande ont été détectés, mais le deuxième paramètre de ligne de commande n&#39;était pas une date valide. &quot;\n            PrintCommandLineUsage\n            Sortie 1\n        # l&#39;heure de fin est à la fin de la date indiquée (23:59:59) &#8211; ajoutez un jour puis soustrayez une seconde\n        $ EndDate = (Get-Date -Date $ args[2]) + (New-Timespan &#8211; Jour 1) &#8211; (New-Timespan &#8211; Deuxième 1)\n        # vérifie si le paramètre de ligne de commande a été reconnu comme une date valide\n        si (! $?) \n            # il y avait un paramètre de ligne de commande non reconnu, donc imprimez les données d&#39;utilisation et quittez avec errorlevel 1\n            Write-Host &quot;` nERROR: Trois paramètres de ligne de commande ont été détectés, mais le troisième paramètre de ligne de commande n&#39;était pas une date valide. &quot;\n            PrintCommandLineUsage\n            Sortie 1\n        # redéfinit le traitement des erreurs par défaut\n        $ ErrorActionPreference = &quot;Continuer&quot;\n    défaut \n        # il n&#39;y a pas ou trop de paramètres de ligne de commande présents, donc imprimez les données d&#39;utilisation et quittez avec errorlevel 1\n        Write-Host &quot;` nERROR: Aucun ou trop de paramètres de ligne de commande n&#39;ont été détectés. &quot;\n        PrintCommandLineUsage\n        Sortie 1\n#####\n# définir les noms de fichiers de sortie .CSV\n$ OutputFilenameByPrintJob = &quot;D:  Scripts  Rapport de comptabilisation des travaux d&#39;impression par travail d&#39;impression pour l&#39;hôte du serveur d&#39;impression&quot; + $ PrintServerName + &quot;-&quot; + $ StartDate.ToString (&quot;aaaa-MM-jj&quot;) + &quot;à&quot; + $ EndDate. ToString (&quot;aaaa-MM-jj&quot;)\n + &quot;.csv&quot; # entrez le nom du fichier de sortie souhaité\n$ OutputFilenameByUser = &quot;D:  Scripts  Rapport de comptabilisation des travaux d&#39;impression par utilisateur pour l&#39;hôte du serveur d&#39;impression&quot; + $ PrintServerName + &quot;-&quot; + $ StartDate.ToString (&quot;aaaa-MM-jj&quot;) + &quot;à&quot; + $ EndDate.ToString (&quot;aaaa-MM-jj&quot;)\n + &quot;.csv&quot; # entrez le nom du fichier de sortie souhaité\n#####\n# obtenir les entrées du journal des événements ID 307 et 805\n# afficher le message d&#39;état\nWrite-Host &quot;La collecte des journaux d&#39;événements trouvés dans l&#39;intervalle de temps spécifié va de $ StartDate à $ EndDate.&quot;\n# les entrées de travail d&#39;impression principales sont l&#39;ID d&#39;événement 307 (utilisez &quot;-ErrorAction SilentlyContinue&quot; pour gérer le cas où aucun message du journal des événements n&#39;a été trouvé).\n$ PrintEntries = Get-WinEvent -ErrorAction SilentlyContinue-ComputerName $ PrintServerName -FilterHashTable @ ProviderName = &quot;Microsoft-Windows-PrintService&quot;; StartTime = $ StartDate; EndTime = $ EndDate; ID = 307\n# le nombre de copies correspondant au travail est dans l&#39;ID d&#39;événement 805 (utilisez &quot;-ErrorAction SilentlyContinue&quot; pour traiter le cas où aucun message du journal des événements n&#39;a été trouvé)\n$ PrintEntriesNumberofCopies = Get-WinEvent -ErrorAction SilentlyContinue -ComputerName $ PrintServerName -FilterHashTable @ ProviderName = &quot;Microsoft-Windows-PrintService&quot;; StartTime = $ StartDate; EndTime = $ EndDate; ID = 805\n# vérifier les données trouvées; si aucun enregistrement ID de journal des événements 307 n&#39;a été trouvé, quittez le script sans créer de fichier de sortie (il ne s&#39;agit pas d&#39;une condition d&#39;erreur)\nsi (! $ PrintEntries) \n    Write-Host &quot;Aucun ID d&#39;événement de travail d&#39;impression 307 entrées trouvées dans la plage de temps spécifiée va de $ StartDate à $ EndDate. Script de sortie.&quot;\n    Sortie","# sinon, affiche le nombre d&#39;enregistrements trouvés et continue\n# Measure-Object est nécessaire pour gérer le cas où exactement une entrée de journal d&#39;événements est renvoyée.\nWrite-Host &quot;Nombre d&#39;ID d&#39;événement de travail d&#39;impression 307 entrées trouvées:&quot; ($ PrintEntries | Measure-Object) .Count\nWrite-Host &quot;Nombre d&#39;ID d&#39;événement de travail d&#39;impression 805 entrées trouvées:&quot; ($ PrintEntriesNumberofCopies | Measure-Object) .Count\n# afficher le message d&#39;état\nWrite-Host &quot;Analyse les entrées du journal des événements et écrit les données dans le fichier de sortie .CSV du travail d&#39;impression auxiliaire` &quot;$ OutputFilenameByPrintJob`&quot; &#8230; &quot;\n# écrit l&#39;en-tête initial dans le fichier de sortie du job\nWrite-Output &quot;Date, ID du travail d&#39;impression, nom d&#39;utilisateur, nom complet, nom de l&#39;ordinateur client, nom de l&#39;imprimante, nom du document, taille du travail d&#39;impression en octets, nombre de pages pour une copie, nombre de copies, nombre total de pages&quot; | Out-File -FilePath $ OutputFilenameByPrintJob -Encoding ASCII\n#####\n# boucle pour analyser les entrées du journal des événements ID 307\nForEach ($ PrintEntry in $ PrintEntries)  Out-File -FilePath $ OutputFilenameByPrintJob -Encoding ASCII -Append\n    # mettre à jour le nombre total de pages du travail de l&#39;utilisateur\n    $ UserNameKey = &quot;` &quot;$ UserName ($ ADName)` &quot;&quot;\n    # si l&#39;utilisateur n&#39;est pas encore dans la table de hachage, ajoutez-les et leur nombre total de pages initial\n    if (! $ PerUserTotalPagesRecords.ContainsKey ($ UserNameKey)) \n        $ PerUserTotalPagesRecords.Add ($ UserNameKey, $ TotalPages)\n    # si l&#39;utilisateur est déjà dans la table de hachage, met à jour le nombre total de pages\n    autre \n        $ PerUserTotalPagesRecords.Set_Item ($ UserNameKey, $ PerUserTotalPagesRecords.Get_Item ($ UserNameKey) + $ TotalPages)","# afficher le message d&#39;état\n    Write-Host &quot;Traitement du travail d&#39;impression $ PrintJobCounter (ID du travail $ PrintJobId imprimé à $ StartDate_Time).&quot;\n    $ PrintJobCounter ++","#####\n# faire la comptabilité de travail par utilisateur\n# afficher le message d&#39;état\nWrite-Host &quot;Écriture de données dans le fichier de sortie .CSV par utilisateur` &quot;$ OutputFilenameByUser`&quot; &#8230; &quot;\n# écrit l&#39;en-tête initial dans le fichier de sortie par utilisateur\nWrite-Output &quot;Nom d&#39;utilisateur (Nom complet), Nombre total de pages&quot; | Out-File -FilePath $ OutputFilenameByUser -Encoding ASCII\n# écrit la sortie dans le fichier de sortie par utilisateur dans un ordre trié alphabétiquement par nom d&#39;utilisateur\nForEach ($ PerUserTotalPagesRecordsKey in ($ PerUserTotalPagesRecords.Keys | sort))  Out-File -FilePath $ OutputFilenameByUser -Encoding ASCII -Append","#####\n# quitter\nWrite-Host &quot;Terminé.&quot;","Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"],"content_blocks":[{"id":"text-1","type":"text","heading":"","plain_text":"Voici le code tel que je l’ai actuellement mis en place. D&#39;après ce que je peux dire, tous les prérequis sont terminés et je veux que les fichiers CSV soient exportés vers le dossier D:  Scripts tels que je les ai déjà en place. Le fichier .ps1 est situé dans D:  Scripts\n&lt;#\nGeneratePrintJobAccountingReports.ps1\nver. 2014-09-26-01\nCe script lit les journaux d&#39;événements ID 307 et 805 dans le journal &quot;Journaux des applications et des services&gt; Microsoft&gt; Windows&gt; PrintService&quot;.\nà partir du serveur spécifié et pour la période spécifiée, puis calcule les données du travail d&#39;impression et du nombre total de pages à partir de ces données.","html":"<p>Voici le code tel que je l’ai actuellement mis en place. D&#039;après ce que je peux dire, tous les prérequis sont terminés et je veux que les fichiers CSV soient exportés vers le dossier D:  Scripts tels que je les ai déjà en place. Le fichier .ps1 est situé dans D:  Scripts\n&lt;#\nGeneratePrintJobAccountingReports.ps1\nver. 2014-09-26-01\nCe script lit les journaux d&#039;événements ID 307 et 805 dans le journal &quot;Journaux des applications et des services&gt; Microsoft&gt; Windows&gt; PrintService&quot;.\nà partir du serveur spécifié et pour la période spécifiée, puis calcule les données du travail d&#039;impression et du nombre total de pages à partir de ces données.</p>"},{"id":"text-2","type":"text","heading":"","plain_text":"entrées du journal des événements.\nIl écrit ensuite la sortie dans deux fichiers .CSV, l&#39;un montrant les données des travaux d&#39;impression par impression et l&#39;autre, les données des travaux d&#39;impression par utilisateur.\nLe script dépend des données et du texte spécifiques du journal des événements dans les enregistrements 307 et 805 du journal des événements et a été testé uniquement sur","html":"<p>entrées du journal des événements.\nIl écrit ensuite la sortie dans deux fichiers .CSV, l&#039;un montrant les données des travaux d&#039;impression par impression et l&#039;autre, les données des travaux d&#039;impression par utilisateur.\nLe script dépend des données et du texte spécifiques du journal des événements dans les enregistrements 307 et 805 du journal des événements et a été testé uniquement sur</p>"},{"id":"text-3","type":"text","heading":"","plain_text":"Windows Server 2008 R2 avec SP1.\nExigences:\n&#8211; Assurez-vous que .NET Framework 3.5 ou version ultérieure est installé:\n  &#8211; Ajoutez &quot;.NET Framework 3.5.1&quot; sous l&#39;option &quot;.NET Framework 3.5.1 Features&quot; à l&#39;aide de l&#39;option &quot;Ajouter des fonctionnalités&quot; du Gestionnaire de serveur, ou","html":"<p>Windows Server 2008 R2 avec SP1.\nExigences:\n&#8211; Assurez-vous que .NET Framework 3.5 ou version ultérieure est installé:\n  &#8211; Ajoutez &quot;.NET Framework 3.5.1&quot; sous l&#039;option &quot;.NET Framework 3.5.1 Features&quot; à l&#039;aide de l&#039;option &quot;Ajouter des fonctionnalités&quot; du Gestionnaire de serveur, ou</p>"},{"id":"text-4","type":"text","heading":"","plain_text":"&#8211; Tous les programmes&gt; Accessoires&gt; Windows PowerShell&gt; cliquez avec le bouton droit de la souris sur Windows PowerShell&gt; Exécuter en tant qu&#39;administrateur &#8230;\n    Module d&#39;importation ServerManager\n    Ajouter-WindowsFeature NET-Framework-Core\n&#8211; Activer et configurer la journalisation des événements des travaux d&#39;impression sur le serveur d&#39;impression souhaité:\n  &#8211; démarrez Périphériques et imprimantes&gt; (surlignez toutes les imprimantes)&gt; Propriétés du serveur d&#39;impression&gt; Avancé\n    &#8211; cocher &quot;Afficher les notifications d&#39;information pour les imprimantes locales&quot;\n    &#8211; cochez la case &quot;Afficher les notifications d&#39;information pour les imprimantes réseau&quot;\n      &#8211; D&#39;ACCORD\n  &#8211; démarrez l&#39;Observateur d&#39;événements&gt; Journaux des applications et des services&gt; Microsoft&gt; Windows&gt; PrintService","html":"<p>&#8211; Tous les programmes&gt; Accessoires&gt; Windows PowerShell&gt; cliquez avec le bouton droit de la souris sur Windows PowerShell&gt; Exécuter en tant qu&#039;administrateur &#8230;\n    Module d&#039;importation ServerManager\n    Ajouter-WindowsFeature NET-Framework-Core\n&#8211; Activer et configurer la journalisation des événements des travaux d&#039;impression sur le serveur d&#039;impression souhaité:\n  &#8211; démarrez Périphériques et imprimantes&gt; (surlignez toutes les imprimantes)&gt; Propriétés du serveur d&#039;impression&gt; Avancé\n    &#8211; cocher &quot;Afficher les notifications d&#039;information pour les imprimantes locales&quot;\n    &#8211; cochez la case &quot;Afficher les notifications d&#039;information pour les imprimantes réseau&quot;\n      &#8211; D&#039;ACCORD\n  &#8211; démarrez l&#039;Observateur d&#039;événements&gt; Journaux des applications et des services&gt; Microsoft&gt; Windows&gt; PrintService</p>"},{"id":"text-5","type":"text","heading":"","plain_text":"&#8211; cliquez avec le bouton droit de la souris sur Opérationnel&gt; Activer le journal\n    &#8211; cliquez avec le bouton droit de la souris sur Opérationnel&gt; Propriétés&gt; Taille maximale du journal (Ko): 65536 (1028 Ko par défaut)\n      &#8211; D&#39;ACCORD\n&#8211; Assurez-vous que le compte d&#39;utilisateur utilisé pour exécuter le script dispose d&#39;une autorisation d&#39;écriture sur le répertoire de destination qui contiendra le\n  fichiers de sortie .CSV (&quot;D:  Scripts &quot; dans le code ci-dessous). Modifiez les chemins et les noms de fichiers .CSV dans le code ci-dessous, selon vos besoins.\n&#8211; Si le serveur d&#39;impression est un serveur distant, vérifiez que le compte d&#39;utilisateur utilisé pour exécuter le script dispose d&#39;un appel de procédure à distance.","html":"<p>&#8211; cliquez avec le bouton droit de la souris sur Opérationnel&gt; Activer le journal\n    &#8211; cliquez avec le bouton droit de la souris sur Opérationnel&gt; Propriétés&gt; Taille maximale du journal (Ko): 65536 (1028 Ko par défaut)\n      &#8211; D&#039;ACCORD\n&#8211; Assurez-vous que le compte d&#039;utilisateur utilisé pour exécuter le script dispose d&#039;une autorisation d&#039;écriture sur le répertoire de destination qui contiendra le\n  fichiers de sortie .CSV (&quot;D:  Scripts &quot; dans le code ci-dessous). Modifiez les chemins et les noms de fichiers .CSV dans le code ci-dessous, selon vos besoins.\n&#8211; Si le serveur d&#039;impression est un serveur distant, vérifiez que le compte d&#039;utilisateur utilisé pour exécuter le script dispose d&#039;un appel de procédure à distance.</p>"},{"id":"text-6","type":"text","heading":"","plain_text":"accès réseau au nom d’hôte spécifié et que les règles de pare-feu autorisent un tel accès au réseau.\n&#8211; Si le serveur d&#39;impression enregistre les événements dans une langue autre que l&#39;anglais, personnalisez la chaîne de recherche du message ID 805 ci-dessous.\n  pour correspondre à la chaîne appropriée à la langue utilisée dans le message du journal des événements ID 805 du serveur d&#39;impression.\nUsage:\n&#8211; voir la fonction PrintCommandLineUsage ci-dessous\nCodes de sortie:\n&#8211; errorlevel 0 indique aucune erreur (des enregistrements ont été trouvés et générés, ou aucun enregistrement n&#39;a été trouvé)\n&#8211; errorlevel 1 indique une erreur (paramètres de ligne de commande imparables ou enregistrements de journal d&#39;événements ID 805 manquants)\nNotes d&#39;implémentation:\n&#8211; Cas d&#39;une imprimante HP LaserJet P2055dn utilisant le pilote HP Universal Printing PCL 5 (v5.2)\n    L’imprimante enregistre 0 copie pour tous les travaux.\n    Si un script indiquant un nombre de copies égal à 0 est visualisé par le script, un avertissement est généré, puis le fichier affecté est considéré.","html":"<p>accès réseau au nom d’hôte spécifié et que les règles de pare-feu autorisent un tel accès au réseau.\n&#8211; Si le serveur d&#039;impression enregistre les événements dans une langue autre que l&#039;anglais, personnalisez la chaîne de recherche du message ID 805 ci-dessous.\n  pour correspondre à la chaîne appropriée à la langue utilisée dans le message du journal des événements ID 805 du serveur d&#039;impression.\nUsage:\n&#8211; voir la fonction PrintCommandLineUsage ci-dessous\nCodes de sortie:\n&#8211; errorlevel 0 indique aucune erreur (des enregistrements ont été trouvés et générés, ou aucun enregistrement n&#039;a été trouvé)\n&#8211; errorlevel 1 indique une erreur (paramètres de ligne de commande imparables ou enregistrements de journal d&#039;événements ID 805 manquants)\nNotes d&#039;implémentation:\n&#8211; Cas d&#039;une imprimante HP LaserJet P2055dn utilisant le pilote HP Universal Printing PCL 5 (v5.2)\n    L’imprimante enregistre 0 copie pour tous les travaux.\n    Si un script indiquant un nombre de copies égal à 0 est visualisé par le script, un avertissement est généré, puis le fichier affecté est considéré.</p>"},{"id":"text-7","type":"text","heading":"","plain_text":"tâche d&#39;impression à imprimer avec 1 copie pour deviner le nombre réel de copies.\n    Dans ce cas particulier, le correctif consistait à mettre à niveau le pilote d&#39;imprimante vers le pilote HP Universal Printing PCL 5 (v5.5.0).\n&#8211; Cas d’une imprimante couleur HP LaserJet Pro 400, modèle M451dn (CE957A), utilisant le pilote HP Universal Printing PCL 6 (v5.0.3),","html":"<p>tâche d&#039;impression à imprimer avec 1 copie pour deviner le nombre réel de copies.\n    Dans ce cas particulier, le correctif consistait à mettre à niveau le pilote d&#039;imprimante vers le pilote HP Universal Printing PCL 5 (v5.5.0).\n&#8211; Cas d’une imprimante couleur HP LaserJet Pro 400, modèle M451dn (CE957A), utilisant le pilote HP Universal Printing PCL 6 (v5.0.3),</p>"},{"id":"text-8","type":"text","heading":"","plain_text":"le pilote HP Universal Printing PCL 5 (v5.2) et le pilote HP Universal Printing PS (v.5.0.3):\n    Dans tous les cas, cette imprimante enregistre 1 copie de tous les travaux dans l&#39;ID d&#39;événement 805, même lorsque l&#39;utilisateur imprime plus d&#39;une copie du travail.","html":"<p>le pilote HP Universal Printing PCL 5 (v5.2) et le pilote HP Universal Printing PS (v.5.0.3):\n    Dans tous les cas, cette imprimante enregistre 1 copie de tous les travaux dans l&#039;ID d&#039;événement 805, même lorsque l&#039;utilisateur imprime plus d&#039;une copie du travail.</p>"},{"id":"text-9","type":"text","heading":"","plain_text":"Le script ne détecte aucun problème. Il a été découvert par observation.\n    Le correctif consistait à effacer le paramètre &quot;Partage&gt; Rendu des travaux d&#39;impression sur les ordinateurs clients&quot; des propriétés de l&#39;imprimante (&quot;activé&quot; par défaut).","html":"<p>Le script ne détecte aucun problème. Il a été découvert par observation.\n    Le correctif consistait à effacer le paramètre &quot;Partage&gt; Rendu des travaux d&#039;impression sur les ordinateurs clients&quot; des propriétés de l&#039;imprimante (&quot;activé&quot; par défaut).</p>"},{"id":"text-10","type":"text","heading":"","plain_text":"Avec cette modification, le nombre de copies par travail a été signalé avec précision dans le journal des événements Windows.\n    SUGGESTION: Consultez le fichier .CSV généré le premier mois et recherchez les imprimantes ne signalant qu&#39;une seule copie de toutes les tâches. Celles-ci\n      les imprimantes peuvent avoir besoin de la solution de contournement pour être restituées côté serveur.\nHistoire:\n&#8211; 2010-02 Script original écrit par Sh_Con à \nhttp://social.technet.microsoft.com/Forums/en-US/ITCG/thread/007be664-1d8d-461c-9e0b-d8177106d4f8\n&#8211; 2011-05 Modifié par BSOD2600 à \nhttp://social.technet.microsoft.com/Forums/en-US/ITCG/thread/007be664-1d8d-461c-9e0b-d8177106d4f8\n&#8211; 2011-10 Modifié par Tim Miller Dyck de PeaceWorks Technology Solutions pour inclure le nombre de copies dans la comptabilisation de page par corrélation avec","html":"<p>Avec cette modification, le nombre de copies par travail a été signalé avec précision dans le journal des événements Windows.\n    SUGGESTION: Consultez le fichier .CSV généré le premier mois et recherchez les imprimantes ne signalant qu&#039;une seule copie de toutes les tâches. Celles-ci\n      les imprimantes peuvent avoir besoin de la solution de contournement pour être restituées côté serveur.\nHistoire:\n&#8211; 2010-02 Script original écrit par Sh_Con à \nhttp://social.technet.microsoft.com/Forums/en-US/ITCG/thread/007be664-1d8d-461c-9e0b-d8177106d4f8\n&#8211; 2011-05 Modifié par BSOD2600 à \nhttp://social.technet.microsoft.com/Forums/en-US/ITCG/thread/007be664-1d8d-461c-9e0b-d8177106d4f8\n&#8211; 2011-10 Modifié par Tim Miller Dyck de PeaceWorks Technology Solutions pour inclure le nombre de copies dans la comptabilisation de page par corrélation avec</p>"},{"id":"text-11","type":"text","heading":"","plain_text":"ID d&#39;événement 805, ajout des paramètres de nom d&#39;hôte et de date du serveur d&#39;impression cible, ajout du rapport de total des pages par utilisateur et du codage du commutateur à partir de\n    Unicode vers ASCII pour une meilleure compatibilité Excel .CSV.\n    Merci au Comité central mennonite du Canada d’avoir parrainé ce développement supplémentaire.\n&#8211; 2012-09 Modifié par Tim Miller Dyck de PeaceWorks Technology Solutions pour inclure un avertissement concernant les travaux d&#39;impression ne rapportant aucun exemplaire,","html":"<p>ID d&#039;événement 805, ajout des paramètres de nom d&#039;hôte et de date du serveur d&#039;impression cible, ajout du rapport de total des pages par utilisateur et du codage du commutateur à partir de\n    Unicode vers ASCII pour une meilleure compatibilité Excel .CSV.\n    Merci au Comité central mennonite du Canada d’avoir parrainé ce développement supplémentaire.\n&#8211; 2012-09 Modifié par Tim Miller Dyck de PeaceWorks Technology Solutions pour inclure un avertissement concernant les travaux d&#039;impression ne rapportant aucun exemplaire,</p>"},{"id":"text-12","type":"text","heading":"","plain_text":"ajouter un avertissement concernant certains travaux d&#39;impression rapportant de manière incorrecte une copie lorsque plusieurs copies ont été imprimées, ajoutez le numéro d&#39;identification du travail d&#39;impression","html":"<p>ajouter un avertissement concernant certains travaux d&#039;impression rapportant de manière incorrecte une copie lorsque plusieurs copies ont été imprimées, ajoutez le numéro d&#039;identification du travail d&#039;impression</p>"},{"id":"text-13","type":"text","heading":"","plain_text":"dans la sortie .CSV et remplacez les virgules dans le nom du travail d&#39;impression par des soulignés pour une analyse plus fiable des fichiers .CSV avec certains clients.\n&#8211; 2014-09 Modifié par Tim Miller Dyck de PeaceWorks Technology Solutions pour ajouter une journalisation des alertes et une robustesse supplémentaires dans de rares cas où\n    Les messages d&#39;événement ID 805 sont enregistrés soit 0, soit plus d&#39;une fois, pour le même travail d&#39;impression; ajouter la gestion des caractères de nom de document non valide et PreviousDay","html":"<p>dans la sortie .CSV et remplacez les virgules dans le nom du travail d&#039;impression par des soulignés pour une analyse plus fiable des fichiers .CSV avec certains clients.\n&#8211; 2014-09 Modifié par Tim Miller Dyck de PeaceWorks Technology Solutions pour ajouter une journalisation des alertes et une robustesse supplémentaires dans de rares cas où\n    Les messages d&#039;événement ID 805 sont enregistrés soit 0, soit plus d&#039;une fois, pour le même travail d&#039;impression; ajouter la gestion des caractères de nom de document non valide et PreviousDay</p>"},{"id":"text-14","type":"text","heading":"","plain_text":"améliorations suggérées par les commentateurs à \nhttp://gallery.technet.microsoft.com/scriptcenter/Script-to-generate-print-84bdcf69/view/Discussions#content\n#&gt;\n#####\n# exécuté en mode strict version 2 pour intercepter des variables initialisées et des propriétés / fonctions inexistantes\nSet-StrictMode -version 2\n#####\n# définir les variables initiales\n$ PrintJobCounter = 1 # compteur de sortie d&#39;affichage de la console\n$ PerUserTotalPagesRecords = @  # crée une table de hachage vide\n#####\n# déclarer des fonctions auxiliaires\n# fonction pour imprimer les données d&#39;utilisation sur la console\nFonction PrintCommandLineUsage \n    Write-Host &quot;\nVoici les paramètres du script:\n  (nom d&#39;hôte) PreviousMonth &#8211; Récupère les données de travail d&#39;impression de (nom d&#39;hôte) en fonction de\n                              tout le mois précédent.\n    ou\n  (nom d&#39;hôte) PreviousDay &#8211; Récupère les données de travail d&#39;impression de (nom d&#39;hôte) en fonction de\n                            toute la journée précédente.\n    ou\n  (hostname) (startdate) (enddate) &#8211; Récupère les données de travail d&#39;impression de (hostname)\n                                      basé sur le début et la fin spécifiés\n                                      Rendez-vous. La date doit être spécifiée\n dans un \n                                      format qui correspond au système actuel","html":"<p>améliorations suggérées par les commentateurs à \nhttp://gallery.technet.microsoft.com/scriptcenter/Script-to-generate-print-84bdcf69/view/Discussions#content\n#&gt;\n#####\n# exécuté en mode strict version 2 pour intercepter des variables initialisées et des propriétés / fonctions inexistantes\nSet-StrictMode -version 2\n#####\n# définir les variables initiales\n$ PrintJobCounter = 1 # compteur de sortie d&#039;affichage de la console\n$ PerUserTotalPagesRecords = @  # crée une table de hachage vide\n#####\n# déclarer des fonctions auxiliaires\n# fonction pour imprimer les données d&#039;utilisation sur la console\nFonction PrintCommandLineUsage \n    Write-Host &quot;\nVoici les paramètres du script:\n  (nom d&#039;hôte) PreviousMonth &#8211; Récupère les données de travail d&#039;impression de (nom d&#039;hôte) en fonction de\n                              tout le mois précédent.\n    ou\n  (nom d&#039;hôte) PreviousDay &#8211; Récupère les données de travail d&#039;impression de (nom d&#039;hôte) en fonction de\n                            toute la journée précédente.\n    ou\n  (hostname) (startdate) (enddate) &#8211; Récupère les données de travail d&#039;impression de (hostname)\n                                      basé sur le début et la fin spécifiés\n                                      Rendez-vous. La date doit être spécifiée\n dans un \n                                      format qui correspond au système actuel</p>"},{"id":"text-15","type":"text","heading":"","plain_text":"locale (par exemple, MM / jj / aaaa pour United\n États).\nExemples:\n  powershell.exe -commande `&quot;.  GeneratePrintJobAccountingReports.ps1 localhost PreviousMonth` &quot;\n  powershell.exe &#8211; commande `&quot;.  GeneratePrintJobAccountingReports.ps1 printserver.domain.local 08/01/2014 08/02 / 2014` &quot;\n&quot;","html":"<p>locale (par exemple, MM / jj / aaaa pour United\n États).\nExemples:\n  powershell.exe -commande `&quot;.  GeneratePrintJobAccountingReports.ps1 localhost PreviousMonth` &quot;\n  powershell.exe &#8211; commande `&quot;.  GeneratePrintJobAccountingReports.ps1 printserver.domain.local 08/01/2014 08/02 / 2014` &quot;\n&quot;</p>"},{"id":"text-16","type":"text","heading":"","plain_text":"#####\n# analyser les paramètres de ligne de commande\nswitch ($ args.count) \n    ($ _ -eq 2) -or ($ __eq 3) \n        # s&#39;il y a deux ou trois paramètres, le premier paramètre est le nom d&#39;hôte du serveur d&#39;impression à partir duquel les journaux des événements seront extraits\n        $ PrintServerName = $ args[0]\n        Write-Host &quot;Nom d&#39;hôte du serveur d&#39;impression à interroger:&quot; $ PrintServerName\n    2 \n        # s&#39;il y a exactement deux paramètres, vérifiez que le second est &quot;PreviousMonth&quot; ou &quot;PreviousDay&quot; (en utilisant la comparaison par défaut sans distinction de casse)\n        si ($ args[1].CompareTo (&quot;PreviousMonth&quot;) -eq 0) \n            # l&#39;heure de début est au début (00:00:00) du premier jour du mois précédent\n            $ StartDate = (Get-Date-Day 1 -Hour 0 -Minute 0 -Second 0) .AddMonths (-1)\n            # l&#39;heure de fin est à la fin (23:59:59) du dernier jour du mois précédent\n            $ EndDate = (Get-Date &#8211; Jour 1 &#8211; Heure 0 &#8211; Minute 0 &#8211; Seconde 0) &#8211; (New-Timespan &#8211; Seconde 1)\n        elseif ($ args[1].CompareTo (&quot;PreviousDay&quot;) -eq 0) \n            # l&#39;heure de début est au début (00:00:00) du jour précédent\n            $ StartDate = (Get-Date -Hour 0 -Minute 0 -Second 0) .AddDays (-1)\n            # l&#39;heure de fin est à la fin (23:59:59) du jour précédent\n            $ EndDate = (Get-Date -Hour 23 &#8211; Minute 59 &#8211; Seconde 59) .AddDays (-1)\n        autre \n            # il y avait un paramètre de ligne de commande non reconnu, donc imprimez les données d&#39;utilisation et quittez avec errorlevel 1\n            Write-Host &quot;` nERROR: Deux paramètres de ligne de commande ont été détectés, mais le deuxième paramètre de ligne de commande n&#39;était pas `&quot; PreviousMonth` &quot;ou` &quot;PreviousDay`&quot;. &quot;\n            PrintCommandLineUsage\n            Sortie 1","html":"<p>#####\n# analyser les paramètres de ligne de commande\nswitch ($ args.count) \n    ($ _ -eq 2) -or ($ __eq 3) \n        # s&#039;il y a deux ou trois paramètres, le premier paramètre est le nom d&#039;hôte du serveur d&#039;impression à partir duquel les journaux des événements seront extraits\n        $ PrintServerName = $ args[0]\n        Write-Host &quot;Nom d&#039;hôte du serveur d&#039;impression à interroger:&quot; $ PrintServerName\n    2 \n        # s&#039;il y a exactement deux paramètres, vérifiez que le second est &quot;PreviousMonth&quot; ou &quot;PreviousDay&quot; (en utilisant la comparaison par défaut sans distinction de casse)\n        si ($ args[1].CompareTo (&quot;PreviousMonth&quot;) -eq 0) \n            # l&#039;heure de début est au début (00:00:00) du premier jour du mois précédent\n            $ StartDate = (Get-Date-Day 1 -Hour 0 -Minute 0 -Second 0) .AddMonths (-1)\n            # l&#039;heure de fin est à la fin (23:59:59) du dernier jour du mois précédent\n            $ EndDate = (Get-Date &#8211; Jour 1 &#8211; Heure 0 &#8211; Minute 0 &#8211; Seconde 0) &#8211; (New-Timespan &#8211; Seconde 1)\n        elseif ($ args[1].CompareTo (&quot;PreviousDay&quot;) -eq 0) \n            # l&#039;heure de début est au début (00:00:00) du jour précédent\n            $ StartDate = (Get-Date -Hour 0 -Minute 0 -Second 0) .AddDays (-1)\n            # l&#039;heure de fin est à la fin (23:59:59) du jour précédent\n            $ EndDate = (Get-Date -Hour 23 &#8211; Minute 59 &#8211; Seconde 59) .AddDays (-1)\n        autre \n            # il y avait un paramètre de ligne de commande non reconnu, donc imprimez les données d&#039;utilisation et quittez avec errorlevel 1\n            Write-Host &quot;` nERROR: Deux paramètres de ligne de commande ont été détectés, mais le deuxième paramètre de ligne de commande n&#039;était pas `&quot; PreviousMonth` &quot;ou` &quot;PreviousDay`&quot;. &quot;\n            PrintCommandLineUsage\n            Sortie 1</p>"},{"id":"text-17","type":"text","heading":"","plain_text":"3 \n        # s&#39;il y a exactement trois paramètres, vérifiez que les deuxième et troisième sont des dates\n        # définit la gestion des erreurs pour continuer silencieusement car les erreurs sont vérifiées explicitement\n        $ ErrorActionPreference = &quot;SilentlyContinue&quot;\n        # l&#39;heure de début est au début de la date indiquée (12:00:00 AM)\n        $ StartDate = Get-Date -Date $ args[1]\n        # vérifie si le paramètre de ligne de commande a été reconnu comme une date valide\n        si (! $?) \n            # il y avait un paramètre de ligne de commande non reconnu, donc imprimez les données d&#39;utilisation et quittez avec errorlevel 1\n            Write-Host &quot;` nERROR: Trois paramètres de ligne de commande ont été détectés, mais le deuxième paramètre de ligne de commande n&#39;était pas une date valide. &quot;\n            PrintCommandLineUsage\n            Sortie 1\n        # l&#39;heure de fin est à la fin de la date indiquée (23:59:59) &#8211; ajoutez un jour puis soustrayez une seconde\n        $ EndDate = (Get-Date -Date $ args[2]) + (New-Timespan &#8211; Jour 1) &#8211; (New-Timespan &#8211; Deuxième 1)\n        # vérifie si le paramètre de ligne de commande a été reconnu comme une date valide\n        si (! $?) \n            # il y avait un paramètre de ligne de commande non reconnu, donc imprimez les données d&#39;utilisation et quittez avec errorlevel 1\n            Write-Host &quot;` nERROR: Trois paramètres de ligne de commande ont été détectés, mais le troisième paramètre de ligne de commande n&#39;était pas une date valide. &quot;\n            PrintCommandLineUsage\n            Sortie 1\n        # redéfinit le traitement des erreurs par défaut\n        $ ErrorActionPreference = &quot;Continuer&quot;\n    défaut \n        # il n&#39;y a pas ou trop de paramètres de ligne de commande présents, donc imprimez les données d&#39;utilisation et quittez avec errorlevel 1\n        Write-Host &quot;` nERROR: Aucun ou trop de paramètres de ligne de commande n&#39;ont été détectés. &quot;\n        PrintCommandLineUsage\n        Sortie 1\n#####\n# définir les noms de fichiers de sortie .CSV\n$ OutputFilenameByPrintJob = &quot;D:  Scripts  Rapport de comptabilisation des travaux d&#39;impression par travail d&#39;impression pour l&#39;hôte du serveur d&#39;impression&quot; + $ PrintServerName + &quot;-&quot; + $ StartDate.ToString (&quot;aaaa-MM-jj&quot;) + &quot;à&quot; + $ EndDate. ToString (&quot;aaaa-MM-jj&quot;)\n + &quot;.csv&quot; # entrez le nom du fichier de sortie souhaité\n$ OutputFilenameByUser = &quot;D:  Scripts  Rapport de comptabilisation des travaux d&#39;impression par utilisateur pour l&#39;hôte du serveur d&#39;impression&quot; + $ PrintServerName + &quot;-&quot; + $ StartDate.ToString (&quot;aaaa-MM-jj&quot;) + &quot;à&quot; + $ EndDate.ToString (&quot;aaaa-MM-jj&quot;)\n + &quot;.csv&quot; # entrez le nom du fichier de sortie souhaité\n#####\n# obtenir les entrées du journal des événements ID 307 et 805\n# afficher le message d&#39;état\nWrite-Host &quot;La collecte des journaux d&#39;événements trouvés dans l&#39;intervalle de temps spécifié va de $ StartDate à $ EndDate.&quot;\n# les entrées de travail d&#39;impression principales sont l&#39;ID d&#39;événement 307 (utilisez &quot;-ErrorAction SilentlyContinue&quot; pour gérer le cas où aucun message du journal des événements n&#39;a été trouvé).\n$ PrintEntries = Get-WinEvent -ErrorAction SilentlyContinue-ComputerName $ PrintServerName -FilterHashTable @ ProviderName = &quot;Microsoft-Windows-PrintService&quot;; StartTime = $ StartDate; EndTime = $ EndDate; ID = 307\n# le nombre de copies correspondant au travail est dans l&#39;ID d&#39;événement 805 (utilisez &quot;-ErrorAction SilentlyContinue&quot; pour traiter le cas où aucun message du journal des événements n&#39;a été trouvé)\n$ PrintEntriesNumberofCopies = Get-WinEvent -ErrorAction SilentlyContinue -ComputerName $ PrintServerName -FilterHashTable @ ProviderName = &quot;Microsoft-Windows-PrintService&quot;; StartTime = $ StartDate; EndTime = $ EndDate; ID = 805\n# vérifier les données trouvées; si aucun enregistrement ID de journal des événements 307 n&#39;a été trouvé, quittez le script sans créer de fichier de sortie (il ne s&#39;agit pas d&#39;une condition d&#39;erreur)\nsi (! $ PrintEntries) \n    Write-Host &quot;Aucun ID d&#39;événement de travail d&#39;impression 307 entrées trouvées dans la plage de temps spécifiée va de $ StartDate à $ EndDate. Script de sortie.&quot;\n    Sortie","html":"<p>3 \n        # s&#039;il y a exactement trois paramètres, vérifiez que les deuxième et troisième sont des dates\n        # définit la gestion des erreurs pour continuer silencieusement car les erreurs sont vérifiées explicitement\n        $ ErrorActionPreference = &quot;SilentlyContinue&quot;\n        # l&#039;heure de début est au début de la date indiquée (12:00:00 AM)\n        $ StartDate = Get-Date -Date $ args[1]\n        # vérifie si le paramètre de ligne de commande a été reconnu comme une date valide\n        si (! $?) \n            # il y avait un paramètre de ligne de commande non reconnu, donc imprimez les données d&#039;utilisation et quittez avec errorlevel 1\n            Write-Host &quot;` nERROR: Trois paramètres de ligne de commande ont été détectés, mais le deuxième paramètre de ligne de commande n&#039;était pas une date valide. &quot;\n            PrintCommandLineUsage\n            Sortie 1\n        # l&#039;heure de fin est à la fin de la date indiquée (23:59:59) &#8211; ajoutez un jour puis soustrayez une seconde\n        $ EndDate = (Get-Date -Date $ args[2]) + (New-Timespan &#8211; Jour 1) &#8211; (New-Timespan &#8211; Deuxième 1)\n        # vérifie si le paramètre de ligne de commande a été reconnu comme une date valide\n        si (! $?) \n            # il y avait un paramètre de ligne de commande non reconnu, donc imprimez les données d&#039;utilisation et quittez avec errorlevel 1\n            Write-Host &quot;` nERROR: Trois paramètres de ligne de commande ont été détectés, mais le troisième paramètre de ligne de commande n&#039;était pas une date valide. &quot;\n            PrintCommandLineUsage\n            Sortie 1\n        # redéfinit le traitement des erreurs par défaut\n        $ ErrorActionPreference = &quot;Continuer&quot;\n    défaut \n        # il n&#039;y a pas ou trop de paramètres de ligne de commande présents, donc imprimez les données d&#039;utilisation et quittez avec errorlevel 1\n        Write-Host &quot;` nERROR: Aucun ou trop de paramètres de ligne de commande n&#039;ont été détectés. &quot;\n        PrintCommandLineUsage\n        Sortie 1\n#####\n# définir les noms de fichiers de sortie .CSV\n$ OutputFilenameByPrintJob = &quot;D:  Scripts  Rapport de comptabilisation des travaux d&#039;impression par travail d&#039;impression pour l&#039;hôte du serveur d&#039;impression&quot; + $ PrintServerName + &quot;-&quot; + $ StartDate.ToString (&quot;aaaa-MM-jj&quot;) + &quot;à&quot; + $ EndDate. ToString (&quot;aaaa-MM-jj&quot;)\n + &quot;.csv&quot; # entrez le nom du fichier de sortie souhaité\n$ OutputFilenameByUser = &quot;D:  Scripts  Rapport de comptabilisation des travaux d&#039;impression par utilisateur pour l&#039;hôte du serveur d&#039;impression&quot; + $ PrintServerName + &quot;-&quot; + $ StartDate.ToString (&quot;aaaa-MM-jj&quot;) + &quot;à&quot; + $ EndDate.ToString (&quot;aaaa-MM-jj&quot;)\n + &quot;.csv&quot; # entrez le nom du fichier de sortie souhaité\n#####\n# obtenir les entrées du journal des événements ID 307 et 805\n# afficher le message d&#039;état\nWrite-Host &quot;La collecte des journaux d&#039;événements trouvés dans l&#039;intervalle de temps spécifié va de $ StartDate à $ EndDate.&quot;\n# les entrées de travail d&#039;impression principales sont l&#039;ID d&#039;événement 307 (utilisez &quot;-ErrorAction SilentlyContinue&quot; pour gérer le cas où aucun message du journal des événements n&#039;a été trouvé).\n$ PrintEntries = Get-WinEvent -ErrorAction SilentlyContinue-ComputerName $ PrintServerName -FilterHashTable @ ProviderName = &quot;Microsoft-Windows-PrintService&quot;; StartTime = $ StartDate; EndTime = $ EndDate; ID = 307\n# le nombre de copies correspondant au travail est dans l&#039;ID d&#039;événement 805 (utilisez &quot;-ErrorAction SilentlyContinue&quot; pour traiter le cas où aucun message du journal des événements n&#039;a été trouvé)\n$ PrintEntriesNumberofCopies = Get-WinEvent -ErrorAction SilentlyContinue -ComputerName $ PrintServerName -FilterHashTable @ ProviderName = &quot;Microsoft-Windows-PrintService&quot;; StartTime = $ StartDate; EndTime = $ EndDate; ID = 805\n# vérifier les données trouvées; si aucun enregistrement ID de journal des événements 307 n&#039;a été trouvé, quittez le script sans créer de fichier de sortie (il ne s&#039;agit pas d&#039;une condition d&#039;erreur)\nsi (! $ PrintEntries) \n    Write-Host &quot;Aucun ID d&#039;événement de travail d&#039;impression 307 entrées trouvées dans la plage de temps spécifiée va de $ StartDate à $ EndDate. Script de sortie.&quot;\n    Sortie</p>"},{"id":"text-18","type":"text","heading":"","plain_text":"# sinon, affiche le nombre d&#39;enregistrements trouvés et continue\n# Measure-Object est nécessaire pour gérer le cas où exactement une entrée de journal d&#39;événements est renvoyée.\nWrite-Host &quot;Nombre d&#39;ID d&#39;événement de travail d&#39;impression 307 entrées trouvées:&quot; ($ PrintEntries | Measure-Object) .Count\nWrite-Host &quot;Nombre d&#39;ID d&#39;événement de travail d&#39;impression 805 entrées trouvées:&quot; ($ PrintEntriesNumberofCopies | Measure-Object) .Count\n# afficher le message d&#39;état\nWrite-Host &quot;Analyse les entrées du journal des événements et écrit les données dans le fichier de sortie .CSV du travail d&#39;impression auxiliaire` &quot;$ OutputFilenameByPrintJob`&quot; &#8230; &quot;\n# écrit l&#39;en-tête initial dans le fichier de sortie du job\nWrite-Output &quot;Date, ID du travail d&#39;impression, nom d&#39;utilisateur, nom complet, nom de l&#39;ordinateur client, nom de l&#39;imprimante, nom du document, taille du travail d&#39;impression en octets, nombre de pages pour une copie, nombre de copies, nombre total de pages&quot; | Out-File -FilePath $ OutputFilenameByPrintJob -Encoding ASCII\n#####\n# boucle pour analyser les entrées du journal des événements ID 307\nForEach ($ PrintEntry in $ PrintEntries)  Out-File -FilePath $ OutputFilenameByPrintJob -Encoding ASCII -Append\n    # mettre à jour le nombre total de pages du travail de l&#39;utilisateur\n    $ UserNameKey = &quot;` &quot;$ UserName ($ ADName)` &quot;&quot;\n    # si l&#39;utilisateur n&#39;est pas encore dans la table de hachage, ajoutez-les et leur nombre total de pages initial\n    if (! $ PerUserTotalPagesRecords.ContainsKey ($ UserNameKey)) \n        $ PerUserTotalPagesRecords.Add ($ UserNameKey, $ TotalPages)\n    # si l&#39;utilisateur est déjà dans la table de hachage, met à jour le nombre total de pages\n    autre \n        $ PerUserTotalPagesRecords.Set_Item ($ UserNameKey, $ PerUserTotalPagesRecords.Get_Item ($ UserNameKey) + $ TotalPages)","html":"<p># sinon, affiche le nombre d&#039;enregistrements trouvés et continue\n# Measure-Object est nécessaire pour gérer le cas où exactement une entrée de journal d&#039;événements est renvoyée.\nWrite-Host &quot;Nombre d&#039;ID d&#039;événement de travail d&#039;impression 307 entrées trouvées:&quot; ($ PrintEntries | Measure-Object) .Count\nWrite-Host &quot;Nombre d&#039;ID d&#039;événement de travail d&#039;impression 805 entrées trouvées:&quot; ($ PrintEntriesNumberofCopies | Measure-Object) .Count\n# afficher le message d&#039;état\nWrite-Host &quot;Analyse les entrées du journal des événements et écrit les données dans le fichier de sortie .CSV du travail d&#039;impression auxiliaire` &quot;$ OutputFilenameByPrintJob`&quot; &#8230; &quot;\n# écrit l&#039;en-tête initial dans le fichier de sortie du job\nWrite-Output &quot;Date, ID du travail d&#039;impression, nom d&#039;utilisateur, nom complet, nom de l&#039;ordinateur client, nom de l&#039;imprimante, nom du document, taille du travail d&#039;impression en octets, nombre de pages pour une copie, nombre de copies, nombre total de pages&quot; | Out-File -FilePath $ OutputFilenameByPrintJob -Encoding ASCII\n#####\n# boucle pour analyser les entrées du journal des événements ID 307\nForEach ($ PrintEntry in $ PrintEntries)  Out-File -FilePath $ OutputFilenameByPrintJob -Encoding ASCII -Append\n    # mettre à jour le nombre total de pages du travail de l&#039;utilisateur\n    $ UserNameKey = &quot;` &quot;$ UserName ($ ADName)` &quot;&quot;\n    # si l&#039;utilisateur n&#039;est pas encore dans la table de hachage, ajoutez-les et leur nombre total de pages initial\n    if (! $ PerUserTotalPagesRecords.ContainsKey ($ UserNameKey)) \n        $ PerUserTotalPagesRecords.Add ($ UserNameKey, $ TotalPages)\n    # si l&#039;utilisateur est déjà dans la table de hachage, met à jour le nombre total de pages\n    autre \n        $ PerUserTotalPagesRecords.Set_Item ($ UserNameKey, $ PerUserTotalPagesRecords.Get_Item ($ UserNameKey) + $ TotalPages)</p>"},{"id":"text-19","type":"text","heading":"","plain_text":"# afficher le message d&#39;état\n    Write-Host &quot;Traitement du travail d&#39;impression $ PrintJobCounter (ID du travail $ PrintJobId imprimé à $ StartDate_Time).&quot;\n    $ PrintJobCounter ++","html":"<p># afficher le message d&#039;état\n    Write-Host &quot;Traitement du travail d&#039;impression $ PrintJobCounter (ID du travail $ PrintJobId imprimé à $ StartDate_Time).&quot;\n    $ PrintJobCounter ++</p>"},{"id":"text-20","type":"text","heading":"","plain_text":"#####\n# faire la comptabilité de travail par utilisateur\n# afficher le message d&#39;état\nWrite-Host &quot;Écriture de données dans le fichier de sortie .CSV par utilisateur` &quot;$ OutputFilenameByUser`&quot; &#8230; &quot;\n# écrit l&#39;en-tête initial dans le fichier de sortie par utilisateur\nWrite-Output &quot;Nom d&#39;utilisateur (Nom complet), Nombre total de pages&quot; | Out-File -FilePath $ OutputFilenameByUser -Encoding ASCII\n# écrit la sortie dans le fichier de sortie par utilisateur dans un ordre trié alphabétiquement par nom d&#39;utilisateur\nForEach ($ PerUserTotalPagesRecordsKey in ($ PerUserTotalPagesRecords.Keys | sort))  Out-File -FilePath $ OutputFilenameByUser -Encoding ASCII -Append","html":"<p>#####\n# faire la comptabilité de travail par utilisateur\n# afficher le message d&#039;état\nWrite-Host &quot;Écriture de données dans le fichier de sortie .CSV par utilisateur` &quot;$ OutputFilenameByUser`&quot; &#8230; &quot;\n# écrit l&#039;en-tête initial dans le fichier de sortie par utilisateur\nWrite-Output &quot;Nom d&#039;utilisateur (Nom complet), Nombre total de pages&quot; | Out-File -FilePath $ OutputFilenameByUser -Encoding ASCII\n# écrit la sortie dans le fichier de sortie par utilisateur dans un ordre trié alphabétiquement par nom d&#039;utilisateur\nForEach ($ PerUserTotalPagesRecordsKey in ($ PerUserTotalPagesRecords.Keys | sort))  Out-File -FilePath $ OutputFilenameByUser -Encoding ASCII -Append</p>"},{"id":"text-21","type":"text","heading":"","plain_text":"#####\n# quitter\nWrite-Host &quot;Terminé.&quot;","html":"<p>#####\n# quitter\nWrite-Host &quot;Terminé.&quot;</p>"},{"id":"text-22","type":"text","heading":"","plain_text":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]","html":"<p>Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]</p>"}],"sections":[{"id":"text-1","heading":"Text","content":"Voici le code tel que je l’ai actuellement mis en place. D&#39;après ce que je peux dire, tous les prérequis sont terminés et je veux que les fichiers CSV soient exportés vers le dossier D:  Scripts tels que je les ai déjà en place. Le fichier .ps1 est situé dans D:  Scripts\n&lt;#\nGeneratePrintJobAccountingReports.ps1\nver. 2014-09-26-01\nCe script lit les journaux d&#39;événements ID 307 et 805 dans le journal &quot;Journaux des applications et des services&gt; Microsoft&gt; Windows&gt; PrintService&quot;.\nà partir du serveur spécifié et pour la période spécifiée, puis calcule les données du travail d&#39;impression et du nombre total de pages à partir de ces données."},{"id":"text-2","heading":"Text","content":"entrées du journal des événements.\nIl écrit ensuite la sortie dans deux fichiers .CSV, l&#39;un montrant les données des travaux d&#39;impression par impression et l&#39;autre, les données des travaux d&#39;impression par utilisateur.\nLe script dépend des données et du texte spécifiques du journal des événements dans les enregistrements 307 et 805 du journal des événements et a été testé uniquement sur"},{"id":"text-3","heading":"Text","content":"Windows Server 2008 R2 avec SP1.\nExigences:\n&#8211; Assurez-vous que .NET Framework 3.5 ou version ultérieure est installé:\n  &#8211; Ajoutez &quot;.NET Framework 3.5.1&quot; sous l&#39;option &quot;.NET Framework 3.5.1 Features&quot; à l&#39;aide de l&#39;option &quot;Ajouter des fonctionnalités&quot; du Gestionnaire de serveur, ou"},{"id":"text-4","heading":"Text","content":"&#8211; Tous les programmes&gt; Accessoires&gt; Windows PowerShell&gt; cliquez avec le bouton droit de la souris sur Windows PowerShell&gt; Exécuter en tant qu&#39;administrateur &#8230;\n    Module d&#39;importation ServerManager\n    Ajouter-WindowsFeature NET-Framework-Core\n&#8211; Activer et configurer la journalisation des événements des travaux d&#39;impression sur le serveur d&#39;impression souhaité:\n  &#8211; démarrez Périphériques et imprimantes&gt; (surlignez toutes les imprimantes)&gt; Propriétés du serveur d&#39;impression&gt; Avancé\n    &#8211; cocher &quot;Afficher les notifications d&#39;information pour les imprimantes locales&quot;\n    &#8211; cochez la case &quot;Afficher les notifications d&#39;information pour les imprimantes réseau&quot;\n      &#8211; D&#39;ACCORD\n  &#8211; démarrez l&#39;Observateur d&#39;événements&gt; Journaux des applications et des services&gt; Microsoft&gt; Windows&gt; PrintService"},{"id":"text-5","heading":"Text","content":"&#8211; cliquez avec le bouton droit de la souris sur Opérationnel&gt; Activer le journal\n    &#8211; cliquez avec le bouton droit de la souris sur Opérationnel&gt; Propriétés&gt; Taille maximale du journal (Ko): 65536 (1028 Ko par défaut)\n      &#8211; D&#39;ACCORD\n&#8211; Assurez-vous que le compte d&#39;utilisateur utilisé pour exécuter le script dispose d&#39;une autorisation d&#39;écriture sur le répertoire de destination qui contiendra le\n  fichiers de sortie .CSV (&quot;D:  Scripts &quot; dans le code ci-dessous). Modifiez les chemins et les noms de fichiers .CSV dans le code ci-dessous, selon vos besoins.\n&#8211; Si le serveur d&#39;impression est un serveur distant, vérifiez que le compte d&#39;utilisateur utilisé pour exécuter le script dispose d&#39;un appel de procédure à distance."},{"id":"text-6","heading":"Text","content":"accès réseau au nom d’hôte spécifié et que les règles de pare-feu autorisent un tel accès au réseau.\n&#8211; Si le serveur d&#39;impression enregistre les événements dans une langue autre que l&#39;anglais, personnalisez la chaîne de recherche du message ID 805 ci-dessous.\n  pour correspondre à la chaîne appropriée à la langue utilisée dans le message du journal des événements ID 805 du serveur d&#39;impression.\nUsage:\n&#8211; voir la fonction PrintCommandLineUsage ci-dessous\nCodes de sortie:\n&#8211; errorlevel 0 indique aucune erreur (des enregistrements ont été trouvés et générés, ou aucun enregistrement n&#39;a été trouvé)\n&#8211; errorlevel 1 indique une erreur (paramètres de ligne de commande imparables ou enregistrements de journal d&#39;événements ID 805 manquants)\nNotes d&#39;implémentation:\n&#8211; Cas d&#39;une imprimante HP LaserJet P2055dn utilisant le pilote HP Universal Printing PCL 5 (v5.2)\n    L’imprimante enregistre 0 copie pour tous les travaux.\n    Si un script indiquant un nombre de copies égal à 0 est visualisé par le script, un avertissement est généré, puis le fichier affecté est considéré."},{"id":"text-7","heading":"Text","content":"tâche d&#39;impression à imprimer avec 1 copie pour deviner le nombre réel de copies.\n    Dans ce cas particulier, le correctif consistait à mettre à niveau le pilote d&#39;imprimante vers le pilote HP Universal Printing PCL 5 (v5.5.0).\n&#8211; Cas d’une imprimante couleur HP LaserJet Pro 400, modèle M451dn (CE957A), utilisant le pilote HP Universal Printing PCL 6 (v5.0.3),"},{"id":"text-8","heading":"Text","content":"le pilote HP Universal Printing PCL 5 (v5.2) et le pilote HP Universal Printing PS (v.5.0.3):\n    Dans tous les cas, cette imprimante enregistre 1 copie de tous les travaux dans l&#39;ID d&#39;événement 805, même lorsque l&#39;utilisateur imprime plus d&#39;une copie du travail."},{"id":"text-9","heading":"Text","content":"Le script ne détecte aucun problème. Il a été découvert par observation.\n    Le correctif consistait à effacer le paramètre &quot;Partage&gt; Rendu des travaux d&#39;impression sur les ordinateurs clients&quot; des propriétés de l&#39;imprimante (&quot;activé&quot; par défaut)."},{"id":"text-10","heading":"Text","content":"Avec cette modification, le nombre de copies par travail a été signalé avec précision dans le journal des événements Windows.\n    SUGGESTION: Consultez le fichier .CSV généré le premier mois et recherchez les imprimantes ne signalant qu&#39;une seule copie de toutes les tâches. Celles-ci\n      les imprimantes peuvent avoir besoin de la solution de contournement pour être restituées côté serveur.\nHistoire:\n&#8211; 2010-02 Script original écrit par Sh_Con à \nhttp://social.technet.microsoft.com/Forums/en-US/ITCG/thread/007be664-1d8d-461c-9e0b-d8177106d4f8\n&#8211; 2011-05 Modifié par BSOD2600 à \nhttp://social.technet.microsoft.com/Forums/en-US/ITCG/thread/007be664-1d8d-461c-9e0b-d8177106d4f8\n&#8211; 2011-10 Modifié par Tim Miller Dyck de PeaceWorks Technology Solutions pour inclure le nombre de copies dans la comptabilisation de page par corrélation avec"},{"id":"text-11","heading":"Text","content":"ID d&#39;événement 805, ajout des paramètres de nom d&#39;hôte et de date du serveur d&#39;impression cible, ajout du rapport de total des pages par utilisateur et du codage du commutateur à partir de\n    Unicode vers ASCII pour une meilleure compatibilité Excel .CSV.\n    Merci au Comité central mennonite du Canada d’avoir parrainé ce développement supplémentaire.\n&#8211; 2012-09 Modifié par Tim Miller Dyck de PeaceWorks Technology Solutions pour inclure un avertissement concernant les travaux d&#39;impression ne rapportant aucun exemplaire,"},{"id":"text-12","heading":"Text","content":"ajouter un avertissement concernant certains travaux d&#39;impression rapportant de manière incorrecte une copie lorsque plusieurs copies ont été imprimées, ajoutez le numéro d&#39;identification du travail d&#39;impression"},{"id":"text-13","heading":"Text","content":"dans la sortie .CSV et remplacez les virgules dans le nom du travail d&#39;impression par des soulignés pour une analyse plus fiable des fichiers .CSV avec certains clients.\n&#8211; 2014-09 Modifié par Tim Miller Dyck de PeaceWorks Technology Solutions pour ajouter une journalisation des alertes et une robustesse supplémentaires dans de rares cas où\n    Les messages d&#39;événement ID 805 sont enregistrés soit 0, soit plus d&#39;une fois, pour le même travail d&#39;impression; ajouter la gestion des caractères de nom de document non valide et PreviousDay"},{"id":"text-14","heading":"Text","content":"améliorations suggérées par les commentateurs à \nhttp://gallery.technet.microsoft.com/scriptcenter/Script-to-generate-print-84bdcf69/view/Discussions#content\n#&gt;\n#####\n# exécuté en mode strict version 2 pour intercepter des variables initialisées et des propriétés / fonctions inexistantes\nSet-StrictMode -version 2\n#####\n# définir les variables initiales\n$ PrintJobCounter = 1 # compteur de sortie d&#39;affichage de la console\n$ PerUserTotalPagesRecords = @  # crée une table de hachage vide\n#####\n# déclarer des fonctions auxiliaires\n# fonction pour imprimer les données d&#39;utilisation sur la console\nFonction PrintCommandLineUsage \n    Write-Host &quot;\nVoici les paramètres du script:\n  (nom d&#39;hôte) PreviousMonth &#8211; Récupère les données de travail d&#39;impression de (nom d&#39;hôte) en fonction de\n                              tout le mois précédent.\n    ou\n  (nom d&#39;hôte) PreviousDay &#8211; Récupère les données de travail d&#39;impression de (nom d&#39;hôte) en fonction de\n                            toute la journée précédente.\n    ou\n  (hostname) (startdate) (enddate) &#8211; Récupère les données de travail d&#39;impression de (hostname)\n                                      basé sur le début et la fin spécifiés\n                                      Rendez-vous. La date doit être spécifiée\n dans un \n                                      format qui correspond au système actuel"},{"id":"text-15","heading":"Text","content":"locale (par exemple, MM / jj / aaaa pour United\n États).\nExemples:\n  powershell.exe -commande `&quot;.  GeneratePrintJobAccountingReports.ps1 localhost PreviousMonth` &quot;\n  powershell.exe &#8211; commande `&quot;.  GeneratePrintJobAccountingReports.ps1 printserver.domain.local 08/01/2014 08/02 / 2014` &quot;\n&quot;"},{"id":"text-16","heading":"Text","content":"#####\n# analyser les paramètres de ligne de commande\nswitch ($ args.count) \n    ($ _ -eq 2) -or ($ __eq 3) \n        # s&#39;il y a deux ou trois paramètres, le premier paramètre est le nom d&#39;hôte du serveur d&#39;impression à partir duquel les journaux des événements seront extraits\n        $ PrintServerName = $ args[0]\n        Write-Host &quot;Nom d&#39;hôte du serveur d&#39;impression à interroger:&quot; $ PrintServerName\n    2 \n        # s&#39;il y a exactement deux paramètres, vérifiez que le second est &quot;PreviousMonth&quot; ou &quot;PreviousDay&quot; (en utilisant la comparaison par défaut sans distinction de casse)\n        si ($ args[1].CompareTo (&quot;PreviousMonth&quot;) -eq 0) \n            # l&#39;heure de début est au début (00:00:00) du premier jour du mois précédent\n            $ StartDate = (Get-Date-Day 1 -Hour 0 -Minute 0 -Second 0) .AddMonths (-1)\n            # l&#39;heure de fin est à la fin (23:59:59) du dernier jour du mois précédent\n            $ EndDate = (Get-Date &#8211; Jour 1 &#8211; Heure 0 &#8211; Minute 0 &#8211; Seconde 0) &#8211; (New-Timespan &#8211; Seconde 1)\n        elseif ($ args[1].CompareTo (&quot;PreviousDay&quot;) -eq 0) \n            # l&#39;heure de début est au début (00:00:00) du jour précédent\n            $ StartDate = (Get-Date -Hour 0 -Minute 0 -Second 0) .AddDays (-1)\n            # l&#39;heure de fin est à la fin (23:59:59) du jour précédent\n            $ EndDate = (Get-Date -Hour 23 &#8211; Minute 59 &#8211; Seconde 59) .AddDays (-1)\n        autre \n            # il y avait un paramètre de ligne de commande non reconnu, donc imprimez les données d&#39;utilisation et quittez avec errorlevel 1\n            Write-Host &quot;` nERROR: Deux paramètres de ligne de commande ont été détectés, mais le deuxième paramètre de ligne de commande n&#39;était pas `&quot; PreviousMonth` &quot;ou` &quot;PreviousDay`&quot;. &quot;\n            PrintCommandLineUsage\n            Sortie 1"},{"id":"text-17","heading":"Text","content":"3 \n        # s&#39;il y a exactement trois paramètres, vérifiez que les deuxième et troisième sont des dates\n        # définit la gestion des erreurs pour continuer silencieusement car les erreurs sont vérifiées explicitement\n        $ ErrorActionPreference = &quot;SilentlyContinue&quot;\n        # l&#39;heure de début est au début de la date indiquée (12:00:00 AM)\n        $ StartDate = Get-Date -Date $ args[1]\n        # vérifie si le paramètre de ligne de commande a été reconnu comme une date valide\n        si (! $?) \n            # il y avait un paramètre de ligne de commande non reconnu, donc imprimez les données d&#39;utilisation et quittez avec errorlevel 1\n            Write-Host &quot;` nERROR: Trois paramètres de ligne de commande ont été détectés, mais le deuxième paramètre de ligne de commande n&#39;était pas une date valide. &quot;\n            PrintCommandLineUsage\n            Sortie 1\n        # l&#39;heure de fin est à la fin de la date indiquée (23:59:59) &#8211; ajoutez un jour puis soustrayez une seconde\n        $ EndDate = (Get-Date -Date $ args[2]) + (New-Timespan &#8211; Jour 1) &#8211; (New-Timespan &#8211; Deuxième 1)\n        # vérifie si le paramètre de ligne de commande a été reconnu comme une date valide\n        si (! $?) \n            # il y avait un paramètre de ligne de commande non reconnu, donc imprimez les données d&#39;utilisation et quittez avec errorlevel 1\n            Write-Host &quot;` nERROR: Trois paramètres de ligne de commande ont été détectés, mais le troisième paramètre de ligne de commande n&#39;était pas une date valide. &quot;\n            PrintCommandLineUsage\n            Sortie 1\n        # redéfinit le traitement des erreurs par défaut\n        $ ErrorActionPreference = &quot;Continuer&quot;\n    défaut \n        # il n&#39;y a pas ou trop de paramètres de ligne de commande présents, donc imprimez les données d&#39;utilisation et quittez avec errorlevel 1\n        Write-Host &quot;` nERROR: Aucun ou trop de paramètres de ligne de commande n&#39;ont été détectés. &quot;\n        PrintCommandLineUsage\n        Sortie 1\n#####\n# définir les noms de fichiers de sortie .CSV\n$ OutputFilenameByPrintJob = &quot;D:  Scripts  Rapport de comptabilisation des travaux d&#39;impression par travail d&#39;impression pour l&#39;hôte du serveur d&#39;impression&quot; + $ PrintServerName + &quot;-&quot; + $ StartDate.ToString (&quot;aaaa-MM-jj&quot;) + &quot;à&quot; + $ EndDate. ToString (&quot;aaaa-MM-jj&quot;)\n + &quot;.csv&quot; # entrez le nom du fichier de sortie souhaité\n$ OutputFilenameByUser = &quot;D:  Scripts  Rapport de comptabilisation des travaux d&#39;impression par utilisateur pour l&#39;hôte du serveur d&#39;impression&quot; + $ PrintServerName + &quot;-&quot; + $ StartDate.ToString (&quot;aaaa-MM-jj&quot;) + &quot;à&quot; + $ EndDate.ToString (&quot;aaaa-MM-jj&quot;)\n + &quot;.csv&quot; # entrez le nom du fichier de sortie souhaité\n#####\n# obtenir les entrées du journal des événements ID 307 et 805\n# afficher le message d&#39;état\nWrite-Host &quot;La collecte des journaux d&#39;événements trouvés dans l&#39;intervalle de temps spécifié va de $ StartDate à $ EndDate.&quot;\n# les entrées de travail d&#39;impression principales sont l&#39;ID d&#39;événement 307 (utilisez &quot;-ErrorAction SilentlyContinue&quot; pour gérer le cas où aucun message du journal des événements n&#39;a été trouvé).\n$ PrintEntries = Get-WinEvent -ErrorAction SilentlyContinue-ComputerName $ PrintServerName -FilterHashTable @ ProviderName = &quot;Microsoft-Windows-PrintService&quot;; StartTime = $ StartDate; EndTime = $ EndDate; ID = 307\n# le nombre de copies correspondant au travail est dans l&#39;ID d&#39;événement 805 (utilisez &quot;-ErrorAction SilentlyContinue&quot; pour traiter le cas où aucun message du journal des événements n&#39;a été trouvé)\n$ PrintEntriesNumberofCopies = Get-WinEvent -ErrorAction SilentlyContinue -ComputerName $ PrintServerName -FilterHashTable @ ProviderName = &quot;Microsoft-Windows-PrintService&quot;; StartTime = $ StartDate; EndTime = $ EndDate; ID = 805\n# vérifier les données trouvées; si aucun enregistrement ID de journal des événements 307 n&#39;a été trouvé, quittez le script sans créer de fichier de sortie (il ne s&#39;agit pas d&#39;une condition d&#39;erreur)\nsi (! $ PrintEntries) \n    Write-Host &quot;Aucun ID d&#39;événement de travail d&#39;impression 307 entrées trouvées dans la plage de temps spécifiée va de $ StartDate à $ EndDate. Script de sortie.&quot;\n    Sortie"},{"id":"text-18","heading":"Text","content":"# sinon, affiche le nombre d&#39;enregistrements trouvés et continue\n# Measure-Object est nécessaire pour gérer le cas où exactement une entrée de journal d&#39;événements est renvoyée.\nWrite-Host &quot;Nombre d&#39;ID d&#39;événement de travail d&#39;impression 307 entrées trouvées:&quot; ($ PrintEntries | Measure-Object) .Count\nWrite-Host &quot;Nombre d&#39;ID d&#39;événement de travail d&#39;impression 805 entrées trouvées:&quot; ($ PrintEntriesNumberofCopies | Measure-Object) .Count\n# afficher le message d&#39;état\nWrite-Host &quot;Analyse les entrées du journal des événements et écrit les données dans le fichier de sortie .CSV du travail d&#39;impression auxiliaire` &quot;$ OutputFilenameByPrintJob`&quot; &#8230; &quot;\n# écrit l&#39;en-tête initial dans le fichier de sortie du job\nWrite-Output &quot;Date, ID du travail d&#39;impression, nom d&#39;utilisateur, nom complet, nom de l&#39;ordinateur client, nom de l&#39;imprimante, nom du document, taille du travail d&#39;impression en octets, nombre de pages pour une copie, nombre de copies, nombre total de pages&quot; | Out-File -FilePath $ OutputFilenameByPrintJob -Encoding ASCII\n#####\n# boucle pour analyser les entrées du journal des événements ID 307\nForEach ($ PrintEntry in $ PrintEntries)  Out-File -FilePath $ OutputFilenameByPrintJob -Encoding ASCII -Append\n    # mettre à jour le nombre total de pages du travail de l&#39;utilisateur\n    $ UserNameKey = &quot;` &quot;$ UserName ($ ADName)` &quot;&quot;\n    # si l&#39;utilisateur n&#39;est pas encore dans la table de hachage, ajoutez-les et leur nombre total de pages initial\n    if (! $ PerUserTotalPagesRecords.ContainsKey ($ UserNameKey)) \n        $ PerUserTotalPagesRecords.Add ($ UserNameKey, $ TotalPages)\n    # si l&#39;utilisateur est déjà dans la table de hachage, met à jour le nombre total de pages\n    autre \n        $ PerUserTotalPagesRecords.Set_Item ($ UserNameKey, $ PerUserTotalPagesRecords.Get_Item ($ UserNameKey) + $ TotalPages)"},{"id":"text-19","heading":"Text","content":"# afficher le message d&#39;état\n    Write-Host &quot;Traitement du travail d&#39;impression $ PrintJobCounter (ID du travail $ PrintJobId imprimé à $ StartDate_Time).&quot;\n    $ PrintJobCounter ++"},{"id":"text-20","heading":"Text","content":"#####\n# faire la comptabilité de travail par utilisateur\n# afficher le message d&#39;état\nWrite-Host &quot;Écriture de données dans le fichier de sortie .CSV par utilisateur` &quot;$ OutputFilenameByUser`&quot; &#8230; &quot;\n# écrit l&#39;en-tête initial dans le fichier de sortie par utilisateur\nWrite-Output &quot;Nom d&#39;utilisateur (Nom complet), Nombre total de pages&quot; | Out-File -FilePath $ OutputFilenameByUser -Encoding ASCII\n# écrit la sortie dans le fichier de sortie par utilisateur dans un ordre trié alphabétiquement par nom d&#39;utilisateur\nForEach ($ PerUserTotalPagesRecordsKey in ($ PerUserTotalPagesRecords.Keys | sort))  Out-File -FilePath $ OutputFilenameByUser -Encoding ASCII -Append"},{"id":"text-21","heading":"Text","content":"#####\n# quitter\nWrite-Host &quot;Terminé.&quot;"},{"id":"text-22","heading":"Text","content":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"}],"media":{"primary_image":""},"relations":[{"rel":"canonical","href":"https://tutos-gameserver.fr/2019/10/12/audits-du-serveur-dimpression-nombre-dimpressions-effectuees-par-personne-par-mois-serveur-dimpression/"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/10/12/audits-du-serveur-dimpression-nombre-dimpressions-effectuees-par-personne-par-mois-serveur-dimpression/llm","type":"text/html"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/10/12/audits-du-serveur-dimpression-nombre-dimpressions-effectuees-par-personne-par-mois-serveur-dimpression/llm.json","type":"application/json"},{"rel":"llm-manifest","href":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","type":"application/json"}],"http_headers":{"X-LLM-Friendly":"1","X-LLM-Schema":"1.1.0","Content-Security-Policy":"default-src 'none'; img-src * data:; style-src 'unsafe-inline'"},"license":"CC BY-ND 4.0","attribution_required":true,"allow_cors":false}