/ / Stockage EventViewerLogs dans une feuille de calcul Excel de Powershell - excel, powershell, cmdlet, get-eventlog

Stockage de EventViewerLogs dans une feuille de calcul Excel de Powershell - excel, powershell, cmdlet, get-eventlog

Je veux stocker la sortie de:

$Application = Get-EventLog -LogName Application | Where-Object {($_.EntryType -like "Error" -or $_.EntryType -like "Warning")};

dans un tableur Excel.

J'ai essayé de faire: $Application | Out-File E:app.csv;

Je reçois la sortie en tant que: SORTIE

Comme vous pouvez le constater, les colonnes ne sont pas alignées séparément dans la feuille de calcul Excel et les valeurs / contenu des colonnes sont incomplets et se terminent par (...).

Je souhaite stocker correctement les valeurs complètes que chaque colonne contient dans le tableur Excel.

Réponses:

0 pour la réponse № 1

Comme déjà mentionné dans le commentaire, vous recherchez Export-Csv cmdlet qui Converts objects into a series of comma-separated (CSV) strings and saves the strings in a CSV file. Vous pouvez faire quelque chose comme ça -

$Application = Get-EventLog -LogName Application | Where-Object {($_.EntryType -like "Error" -or $_.EntryType -like "Warning")};
$Application | Export-Csv -path E:app.csv -NoTypeInformation

La prochaine étape de votre problème serait de convertir le csv déposer dans excel fichier car vous avez besoin de données stockées dans un tableur Excel. Vous trouverez ci-dessous le code que j'utilise avec succès depuis un certain temps.

#Define locations and delimiter
$csv = "E:app.csv" #Location of the source file
$xlsx = "E:app.xlsx" #Desired location of output
$delimiter = ";" #Specify the delimiter used in the file

# Create a new Excel workbook with one empty sheet
$excel = New-Object -ComObject excel.application
$workbook = $excel.Workbooks.Add(1)
$worksheet = $workbook.worksheets.Item(1)

# Build the QueryTables.Add command and reformat the data
$TxtConnector = ("TEXT;" + $csv)
$Connector = $worksheet.QueryTables.add($TxtConnector,$worksheet.Range("A1"))
$query = $worksheet.QueryTables.item($Connector.name)
$query.TextFileOtherDelimiter = $delimiter
$query.TextFileParseType  = 1
$query.TextFileColumnDataTypes = ,1 * $worksheet.Cells.Columns.Count
$query.AdjustColumnWidth = 1

# Execute & delete the import query
$query.Refresh()
$query.Delete()

# Save & close the Workbook as XLSX.
$Workbook.SaveAs($xlsx,51)
$excel.Quit()

Le code ci-dessus convertira le csv déposer dans un XLSX fichier. Tu peux voir ce pour plus d'informations.


0 pour la réponse № 2

Vous pouvez exporter au format CSV avec un -Delimiter "#seperator" séparer les colonnes dans Excel

ça pourrait ressembler à ça

$Application | Export-Csv C:test.csv -Delimiter ";"