Question script audit d'impression

Plus d'informations
il y a 9 ans 9 mois #21938 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

Nizar

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 9 mois #21944 par Nizar EL BOUAZZAOUI
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\"

Nizar

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 9 mois #21953 par Arnaud Petitjean
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

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
Propulsé par Kunena