0
votes

Comment filtrer pour des mots spécifiques utilisant la coquille d'alimentation

J'essaie de comprendre qui a été imprimé à partir d'un serveur d'impression de 2008. J'ai généré un fichier journal de Server Manager et j'ai maintenant ces informations dans un fichier CSV. Mon objectif est d'analyser cette information et d'exporter à un nouveau CSV pour connaître les seuls associés ID utilisateur , nom d'hôte de l'ordinateur et Nom de l'imprimante , tous inclus dans le fichier journal de CSV afin que je puisse déterminer qui imprime à partir de ce serveur et assurez-vous que je peux les mapper sur notre nouveau serveur d'impression. Le CSV consiste en une colonne de données qui a un motif.

Chaque rangée de la CSV suit le motif ci-dessous, mais le libellé est différent pour chaque ligne car le nom du travail est plus long / plus court ou d'autres bits d'informations que je n'ai pas 't veux.

Le motif global est: xxx

plus d'informations que je ne veux pas

mon problème est que je ne peut pas savoir que quelque chose comme ignorer les 5 premiers mots de chaque ligne, le 6ème mot serait l'ID utilisateur, etc., car le format est différent de chaque rangée.

Quel est le meilleur moyen pour moi de Ignorez tous les mots jusqu'à la phrase «appartenant à» ou encore mieux, ID utilisateur, enregistrez-la sur un nouveau CSV dans, puis faites la même chose pour le nom d'hôte de l'ordinateur et le nom de l'imprimante?


1 commentaires

Est-ce que l'une des réponses résoudre ou aide à votre problème , ou était quelque chose en outre nécessaire?


3 Réponses :


1
votes

Cela pourrait être fait suffisamment facilement en utilisant la correspondance d'expression régulière. Les expressions régulières utilisent la correspondance du modèle, de sorte que vous puissiez faire quelque chose comme: xxx

qui vous donnerait un CSV que vous pourriez ouvrir dans Excel ou quelque chose avec juste le numéro de travail, l'ID utilisateur, l'ordinateur qu'ils utilisaient. , l'imprimante est allée et le port qu'il a continué.


0 commentaires

1
votes

La réponse de ThemadTechnicien couvre déjà une majorité de ceci.

$a = Get-Content original.csv
$a[0] += ",Data"
$a | Set-Content updated.csv
$csv = Import-Csv updated.csv

$data = $csv.where({$_."Event ID" -eq 307}) | Select-String -pattern "(?<=owned by )(?<user>[^ ]+)(?: on )(?<host>.*?)(?: was printed on )(?<printer>.*?)(?= through )"

$(ForEach ($m in $data.matches) {
    [pscustomobject][ordered]@{"User"=$m.groups["user"].value
                "Host"=$m.groups["host"].value
                "Printer"=$m.groups["printer"].value
    }
}) | Export-Csv Output.csv -notypeinformation


0 commentaires

0
votes

Ce n'est pas une réponse pour extraire des informations du texte du message, mais plutôt comment éviter de devoir faire face au texte formaté en premier lieu. Il semble que vous essayez d'analyser le message pour les événements de journal des événements avec ID 307. Ce code est adapté de PowerShell One-Liner pour vérifier les travaux d'impression sur un serveur d'impression basé sur Windows .

Utilisation de < Un href = "https://docs.microsoft.com/powershell/module/microsoft.powershell.diagnost.powershell.diagnost.powershell.diagnostique/get-winevent" rel = "nofollow noreferrer"> get-winevant cmdlet Vous pouvez interroger un journal spécifique ( Microsoft-Windows-PrintService / opérationnel ) pour des événements spécifiques ( 307 ), puis il s'agit simplement de récupérer et d'ajouter un nom significatif à Chaque propriété ... xxx

pour un événement avec un message comme celui-ci ...

document 1, document d'impression appartenant à un nom d'utilisateur sur \\ Machinename était Imprimé sur Microsoft Print vers PDF via Port X: \ Directory \ File.ext. Taille en octets: 12345. Pages imprimées: 1. Aucune action d'utilisateur n'est requise.

... Le code ci-dessus émise un objet comme celui-ci ... xxx

Vous pouvez tuyer la commande ci-dessus dans export-csv pour créer votre fichier CSV, ou même simplement utiliser Out-GridView Pour afficher et filtrer les données directement dans PowerShell. De toute façon, pas d'analyse nécessaire.


0 commentaires