【问题标题】:Insert data to powershell将数据插入PowerShell
【发布时间】:2019-01-23 17:12:11
【问题描述】:

我正在执行存档过程,我想将结果插入 CSV 文件。 这个过程看起来像,

$source_path="D:\backup"
$destination="E:\backup"
$start_datetime=date
copy source target
$end_datetime=date

CSV 文件看起来像

Date | Start | end | Source | Destination

我想插入下面​​的数据。

DATE = today's date.
Start = $start_datetime
end = $end_datetime
Source = $source_path
Destination=$destination

我尝试了一些将数据写入 CSV 的方法,但我无法得到确切的结果。

谁能帮我解决这个问题?

【问题讨论】:

    标签: windows powershell csv export-to-csv


    【解决方案1】:

    查看 psobjects - Example guide

    例如:

    [array]$myObject = [pscustomobject]@{
        DATE = today's date.
        Start = $start_datetime
        end = $end_datetime
        Source = $source_path
        Destination=$destination
    }
    
    $myObject | Export-Csv C:\temp\myfile.csv
    

    编辑 - 我不确定您将如何使用Export-Csv。所以我会举几个例子。但是,这确实超出了仅按要求导出 CSV 的范围。我建议用更多关于要求的细节来重写它,或者把它分成几个问题。

    foreach($thing in $things){
    
        # increment array with multiple rows
        [array]$myObject += [pscustomobject]@{
            DATE = today's date.
            Start = $start_datetime
            end = $end_datetime
            Source = $source_path
            Destination=$destination
        }
    }
    
    # add data to an existing csv, which has the heading DATEM Start, end, Source, Destination
    $myObject | Export-Csv C:\temp\myfile.csv -Append
    

    # if/else logic
    if($end_time -gt $somevariable){
        [array]$myObject = [pscustomobject]@{
            DATE = today's date.
            Start = $start_datetime
            end = $end_datetime
            Source = $source_path
            Destination=$destination
        }         
    }else{
        [array]$myObject = [pscustomobject]@{
            DATE = someotherdate
            Start = $start_datetime
            end = $end_datetime
            Source = $source_path
            Destination=$destination
        }
    }
    

    【讨论】:

    • 谢谢,但是每次执行,这个 CSV 文件都会被新数据替换,我想保持最新。
    • 您的意思是每次运行脚本时都要添加到 csv 中吗?所以保留旧数据并添加新数据?
    • 因为同步文件有时 30GB,所以根据end_time,我可以得出哪个日期同步了更多数据。为此,我需要跟踪它。同样,我将准备另一个具有不同导出到 CSV 的同步脚本
    【解决方案2】:

    您提供的具体细节很少,而且伪代码也很少,因此很难准确说出您在做什么或您想要什么。但是,如果您只想将记录附加到 CSV 文件,Export-Csv 有一个 -Append 开关。您可以随时将自定义对象通过管道传输到 Export-Csv。

    [PSCustomObject]@{
        DATE = today's date.
        Start = $start_datetime
        end = $end_datetime
        Source = $source_path
        Destination=$destination
    } | Export-Csv -Path $CsvFile -Append -NoTypeInformation
    

    【讨论】:

    • 感谢分享,有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多