解析日志并导出为CSV

时间:2019-07-26 20:55:52

标签: powershell export-to-csv

导出后,我需要帮助来完成此脚本以及其他详细信息。我需要做的是将其运行到多台计算机上并导出到CSV。我想在第一栏中输入计算机名称,然后在第二栏中输入包含错误的字符串。我想将CSV导出到\\servername\folder\...

Get-Content "$env:windir\Panther\setuperr.log" | Where-Object {
    $_.Contains("Can't retrieve group.........")
} | Select-Object -Last 1

1 个答案:

答案 0 :(得分:0)

您可以通过PowerShell remoting执行此操作。由于您没有发布有关要查询的计算机的任何信息,因此我假设以下内容:

  • 您正在使用PowerShell 5.x
  • 您的遥控器是WindowServer 2012 R2或更高版本,或者是Win10
  • 基于这些instructions
  • 允许并激活PS远程处理

如果是这样,则可以通过Invoke-Command-ComputerName参数集通过组合使用-Session。这是Invoke-Command documentation。简单的例子:

$computerNames = "pc1.domain", "pc2.domain"

$results = @()
foreach ($computerName in $computerNames) {
    $session = New-PSSession -ComputerName $computerName -Credential (Get-Credential)        
    $result = Invoke-Command -Session $session -ScriptBlock {
       # Lets assume that this code from OP is correct
       $foundRow = Get-Content "$env:windir\Panther\setuperr.log" | Where-Object {
          $_.Contains("Can't retrieve group.........") } | Select-Object -Last 1
       # Return custom object to caller
       [PSCustomObject]@{
           FoundRow = $foundRow
           ComputerName = $env:COMPUTERNAME
       }
    }
    $results += $result
}

$results是一个对象数组,其中每个对象都包含一个FoundRowComputerName属性。该对象通过管道传递到Export-Csvdocu)cmdlet:

$results | Export-Csv -NoTypeInformation -Path C:\temp\your.csv 

如果不想每次都键入凭据,则可以创建一个包含计算机名和加密凭据的CSV文件。该link说明了如何以加密方式存储凭据。要遍历数据,可以使用Get-ContentConvertFrom-Csv cmdlet。

希望有帮助。