【问题标题】:Write Informations into existing csv将信息写入现有 csv
【发布时间】:2018-03-23 02:40:00
【问题描述】:

我现有的 csv 如下所示:

"Name","Surename","Workstation"
"Doe","John","PC1"
"Fonzarelli","Arthur","PC4"
"Tribbiani","Joey","PC77"

现在,我想检查主机是否在线,并将结果写入一个名为“状态”的新列到我的 csv 中。

$file = Import-Csv "C:\Scripts\WS-Status.csv"

Foreach ($ws in $file) {

    If (Test-Connection $ws.Workstation -Count 1 -Quiet) {

        Write-Host $ws.Workstation "is online"
    }

    Else {Write-Host $ws.Workstation "is offline"}

}

它在控制台中运行良好,但我怎么能将结果导出到我的 csv 中呢?

【问题讨论】:

    标签: powershell csv export-to-csv


    【解决方案1】:

    您可以在ForEach 循环中创建PSCustomObject

    $file = Import-Csv "C:\Scripts\WS-Status.csv"
    
    Foreach ($ws in $file) {
    
        if(Test-Connection $ws.Workstation -Count 1 -Quiet){
            Write-Host $ws.Workstation "is online"
            $status = "Online"
        }else{
            Write-Host $ws.Workstation "is offline"
            $status = "Offline"
        }
    
        [array]$result += [PSCustomObject] @{
            Name        = $ws.Name
            Surename    = $ws.Surename
            Workstation = $ws.Workstation
            Status      = $status
        }
    
    }
    
    $result | Export-Csv thing.csv -NoTypeInformation
    

    【讨论】:

      【解决方案2】:

      您可以使用Add-Member cmdlet 将成员(状态)添加到您当前的实体:

      $file = Import-Csv "C:\Scripts\WS-Status.csv"
      Foreach ($ws in $file) 
      {
          if (Test-Connection $ws.Workstation -Count 1 -Quiet) 
          {
              Add-Member -InputObject $ws -NotePropertyName "Status" -NotePropertyValue "online"
          }
          else 
          {
              Add-Member -InputObject $ws -NotePropertyName "Status" -NotePropertyValue "offline"
          }
      }
      
      $file | Export-Csv "C:\Scripts\WS-Status.csv" -NoTypeInformation
      

      【讨论】:

        【解决方案3】:

        您必须使用 Out-File cmdlet,它使您能够将管道输出直接发送到文本文件。

        $file = Import-Csv "C:\Scripts\WS-Status.csv"
        
        Foreach ($ws in $file) {
        
            If (Test-Connection $ws.Workstation -Count 1 -Quiet) {
              $ws.Workstation + " is online" | Out-File -Append OutPutFile.csv
            }
            Else {
               $ws.Workstation + ' is offline' | Out-File -Append OutPutFile.csv
            }
        
        }
        

        【讨论】:

          猜你喜欢
          • 2015-08-08
          • 1970-01-01
          • 2013-10-04
          • 2020-01-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多