Question
script audit d'impression
- Nizar EL BOUAZZAOUI
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 9 ans 9 mois #21938
par Nizar EL BOUAZZAOUI
Nizar
script audit d'impression a été créé par Nizar EL BOUAZZAOUI
Bonjour tout le monde,
je sollicite votre aide pour modifier le script qui audit le taux d'impression par personne,
le script est bien opérationnel, il audit le taux d'impression par jour et il me donne a chaque fois un nouveau fichiers
la modification que je veux apporté c'est que je veux qu'il me donne un seul fichiers html qui comporte tous les impressions effectué par mois ,
plus clair, il me créer a chaque mois un fichiers et qu'il se remplit avec le taux d'impression date de se mois
je suis débutant en PS, j'efectue des modification et je créer des simple script, je me suis bloqué,
[code:1]
#VARIABLES
#
$PrintServer = \".\"
#Output File
$Date = (get-date) - (new-timespan -day 1)
$OutputPath = \"c:\audit\\"
#$csvfile = $OutputPath + \"Printing Audit - \" + (Get-Date).ToString(\"yyyy-MM-dd\"«») + \".csv\"
#if ((Test-Path -Path $csvfile) -eq $true) {remove-item $csvfile}
#write-output \"Server,Date,Full Name,Client,Printer Name,Print Size,Pages,Document\" | Out-File $csvfile
$htmlfile = $OutputPath + \"Printing Audit - \" + (Get-Date).ToString(\"yyyy-MM-dd\"«») + \".html\"
if ((Test-Path -Path $htmlfile) -eq $true) {remove-item $htmlfile}
#on collecte les evenements dans le journal printservice
#
$strOutput = \"\"
$filterxml = '<QueryList>
<Query Id=\"0\" Path=\"Microsoft-Windows-PrintService/Operational\">
<Select Path=\"Microsoft-Windows-PrintService/Operational\">*[System[(EventID=307)]]</Select>
</Query>
</QueryList>'
$EventLog = Get-WinEvent -ea SilentlyContinue -Filterxml $filterXml #ajouter -computername XXX si le script n'est pas lancé sur le serveur même
$strOuput = '<lpheader><html><head><title>Audit Active Directory</title></head>
<body><h1>Audit Print Server</h1>
<TABLE BORDER=\"1\" style=\"font-family: Tahoma; font-size: 8pt\" WIDTH=95% >
<tr>
<th VALIGN=\"left\">DATE</th>
<th VALIGN=\"left\">Utilisateurs</th>
<th VALIGN=\"left\">Nom complet</th>
<th VALIGN=\"left\">Fichiers</th>
<th VALIGN=\"left\">Imprimantes</th>
<th VALIGN=\"left\">nombre de Page</th>
</tr>
</lpheader>
<lpbody>'
write-output $strouput | out-file $htmlfile -append
ForEach ($LogEntry in $EventLog)
{
#recupere les jobs
$time = $LogEntry.TimeCreated
$entry = [xml]$LogEntry.ToXml()
$docName = $entry.Event.UserData.DocumentPrinted.Param2
$Username = $entry.Event.UserData.DocumentPrinted.Param3
$Computer = $entry.Event.UserData.DocumentPrinted.Param4
$PrinterName = $entry.Event.UserData.DocumentPrinted.Param5
$PrintSize = $entry.Event.UserData.DocumentPrinted.Param7
$PrintPages = $entry.Event.UserData.DocumentPrinted.Param8
#on recupere le nom complet de l'utilisateur dans l'AD
if ($UserName -gt \"\"«»)
{
$DirectorySearcher = New-Object System.DirectoryServices.DirectorySearcher
$LdapFilter = \"(&(objectClass=user)(samAccountName=${UserName}))\"
$DirectorySearcher.Filter = $LdapFilter
$UserEntry = [adsi]\"$($DirectorySearcher.FindOne().Path)\"
$DisplayName = $UserEntry.displayName
}
#on ecris dans le fichier csv
$strOutput = \"<tr>
<td><tt>$time</tt></td>
<td><tt>$Username</tt></td>
<td><tt>$DisplayName</tt></td>
<td><tt>$docName</tt></td>
<td><tt>$PrinterName</tt></td>
<td><tt>$PrintPages</tt></td>
</tr>\"
#$PrintServer+ \",\" +$time.ToString()+ \",\" +$DisplayName+ \",\" +$Computer+ \",\" +$PrinterName+ \",\" +$PrintSize+ \",\" +$PrintPages+ \",\" +$docName
write-output $strOutput | Out-File $htmlfile -append
}
$finhtml= '</lpbody>
<lpfooter>
</table>
</body>
</html>
</lpfooter>'
write-output $finhtml | out-file $htmlfile -append[/code:1]
Pouvez-vous svp me donner un petit aide,
je vous remercie d'avance
je sollicite votre aide pour modifier le script qui audit le taux d'impression par personne,
le script est bien opérationnel, il audit le taux d'impression par jour et il me donne a chaque fois un nouveau fichiers
la modification que je veux apporté c'est que je veux qu'il me donne un seul fichiers html qui comporte tous les impressions effectué par mois ,
plus clair, il me créer a chaque mois un fichiers et qu'il se remplit avec le taux d'impression date de se mois
je suis débutant en PS, j'efectue des modification et je créer des simple script, je me suis bloqué,
[code:1]
#VARIABLES
#
$PrintServer = \".\"
#Output File
$Date = (get-date) - (new-timespan -day 1)
$OutputPath = \"c:\audit\\"
#$csvfile = $OutputPath + \"Printing Audit - \" + (Get-Date).ToString(\"yyyy-MM-dd\"«») + \".csv\"
#if ((Test-Path -Path $csvfile) -eq $true) {remove-item $csvfile}
#write-output \"Server,Date,Full Name,Client,Printer Name,Print Size,Pages,Document\" | Out-File $csvfile
$htmlfile = $OutputPath + \"Printing Audit - \" + (Get-Date).ToString(\"yyyy-MM-dd\"«») + \".html\"
if ((Test-Path -Path $htmlfile) -eq $true) {remove-item $htmlfile}
#on collecte les evenements dans le journal printservice
#
$strOutput = \"\"
$filterxml = '<QueryList>
<Query Id=\"0\" Path=\"Microsoft-Windows-PrintService/Operational\">
<Select Path=\"Microsoft-Windows-PrintService/Operational\">*[System[(EventID=307)]]</Select>
</Query>
</QueryList>'
$EventLog = Get-WinEvent -ea SilentlyContinue -Filterxml $filterXml #ajouter -computername XXX si le script n'est pas lancé sur le serveur même
$strOuput = '<lpheader><html><head><title>Audit Active Directory</title></head>
<body><h1>Audit Print Server</h1>
<TABLE BORDER=\"1\" style=\"font-family: Tahoma; font-size: 8pt\" WIDTH=95% >
<tr>
<th VALIGN=\"left\">DATE</th>
<th VALIGN=\"left\">Utilisateurs</th>
<th VALIGN=\"left\">Nom complet</th>
<th VALIGN=\"left\">Fichiers</th>
<th VALIGN=\"left\">Imprimantes</th>
<th VALIGN=\"left\">nombre de Page</th>
</tr>
</lpheader>
<lpbody>'
write-output $strouput | out-file $htmlfile -append
ForEach ($LogEntry in $EventLog)
{
#recupere les jobs
$time = $LogEntry.TimeCreated
$entry = [xml]$LogEntry.ToXml()
$docName = $entry.Event.UserData.DocumentPrinted.Param2
$Username = $entry.Event.UserData.DocumentPrinted.Param3
$Computer = $entry.Event.UserData.DocumentPrinted.Param4
$PrinterName = $entry.Event.UserData.DocumentPrinted.Param5
$PrintSize = $entry.Event.UserData.DocumentPrinted.Param7
$PrintPages = $entry.Event.UserData.DocumentPrinted.Param8
#on recupere le nom complet de l'utilisateur dans l'AD
if ($UserName -gt \"\"«»)
{
$DirectorySearcher = New-Object System.DirectoryServices.DirectorySearcher
$LdapFilter = \"(&(objectClass=user)(samAccountName=${UserName}))\"
$DirectorySearcher.Filter = $LdapFilter
$UserEntry = [adsi]\"$($DirectorySearcher.FindOne().Path)\"
$DisplayName = $UserEntry.displayName
}
#on ecris dans le fichier csv
$strOutput = \"<tr>
<td><tt>$time</tt></td>
<td><tt>$Username</tt></td>
<td><tt>$DisplayName</tt></td>
<td><tt>$docName</tt></td>
<td><tt>$PrinterName</tt></td>
<td><tt>$PrintPages</tt></td>
</tr>\"
#$PrintServer+ \",\" +$time.ToString()+ \",\" +$DisplayName+ \",\" +$Computer+ \",\" +$PrinterName+ \",\" +$PrintSize+ \",\" +$PrintPages+ \",\" +$docName
write-output $strOutput | Out-File $htmlfile -append
}
$finhtml= '</lpbody>
<lpfooter>
</table>
</body>
</html>
</lpfooter>'
write-output $finhtml | out-file $htmlfile -append[/code:1]
Pouvez-vous svp me donner un petit aide,
je vous remercie d'avance
Nizar
Connexion ou Créer un compte pour participer à la conversation.
- Nizar EL BOUAZZAOUI
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 9 ans 9 mois #21944
par Nizar EL BOUAZZAOUI
Nizar
Réponse de Nizar EL BOUAZZAOUI sur le sujet Re:script audit d'impression
Bonjour,
en faite je viens de la trouver elle été sous mes yeux
j'ai du remplacer les lignes :
#Output File
$Date = (get-date) - (new-timespan -day 1)
$htmlfile = $OutputPath + \"Printing Audit - \" + (Get-Date).ToString(\"yyyy-MM-dd\") + \".html\"
par:
$Date = Get-Date -uformat %Y_%M
$htmlfile = $OutputPath + \"Printing Audit - \" + (Get-Date).ToString(\"yyyy-MM\") + \".html\"
en faite je viens de la trouver elle été sous mes yeux
j'ai du remplacer les lignes :
#Output File
$Date = (get-date) - (new-timespan -day 1)
$htmlfile = $OutputPath + \"Printing Audit - \" + (Get-Date).ToString(\"yyyy-MM-dd\") + \".html\"
par:
$Date = Get-Date -uformat %Y_%M
$htmlfile = $OutputPath + \"Printing Audit - \" + (Get-Date).ToString(\"yyyy-MM\") + \".html\"
Nizar
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 9 ans 9 mois #21953
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:script audit d'impression
Bonjour Nizar,
Merci pour ton retour sur le bug de ton script. D'après ce que je vois, tu génères toi même le code HTML.
Dans la \"philosophie PowerShell\" il vaudrait mieux que ton script retourne un tableau d'objets. Tableau d'objets que tu exporterais ensuite via la commande ConvertTo-HTML.
Ainsi :
1) C'est plus \"beau\"
2) Tu te prends moins la tête,
3) Tu as davantage de contrôle sur ton HTML
Enfin pour améliorer ton rapport, n'hésites pas à utiliser une feuille de style CSS. C'est simple et ça fait tout de suite plus \"pro\"
@+
Arnaud
Merci pour ton retour sur le bug de ton script. D'après ce que je vois, tu génères toi même le code HTML.
Dans la \"philosophie PowerShell\" il vaudrait mieux que ton script retourne un tableau d'objets. Tableau d'objets que tu exporterais ensuite via la commande ConvertTo-HTML.
Ainsi :
1) C'est plus \"beau\"
2) Tu te prends moins la tête,
3) Tu as davantage de contrôle sur ton HTML
Enfin pour améliorer ton rapport, n'hésites pas à utiliser une feuille de style CSS. C'est simple et ça fait tout de suite plus \"pro\"
@+
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.046 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- script audit d'impression