使用PowerShell处理多个CSV文件,并将数据存储在单独的文本文件(删除空间和新行)中



我正在努力获取此脚本工作。

我正在尝试使用PowerShell处理所有CSV文件(一个),并将每个CSV文件保存为一个单独的文本文件。

,192.168.78.92)

因此,此脚本应从特定的CSV文件中提取每个IPV4Address列值,并在每个IP地址之后添加逗号",然后将所有IP从该特定CSV附加到文本文件。

我的脚本正在处理CSV并生成文本文件,但它仅将CSV中的第一个IP写入文本文件。

您能在这里帮我吗?

Get-ChildItem C:TempQualysAllAssetGroups*.csv | Foreach-Object {
  $basename = $_.Name
  $detail = import-csv $_ 
 foreach ($csv in $detail) { 
 $Outputs =@()
 $field = $csv.ipv4address
 $field = $field + ","
 $Outputs +=$field 
 } 
$Outputs | Out-File "C:TempQualysAllAssetGroupsTextfiles$basename.txt"
$regexA = "(s,)"
$regexB = "s" 
(Get-Content C:TempQualysAllAssetGroupsTextfiles$basename.txt | Out-String) -replace $regexA,' ' -replace "`r?`n(?!`r?`n)"  -join ' ' -replace $regexB, ''|
Set-Content C:TempQualysAllAssetGroupsTextfiles$basename.txt
$b = Get-Content -Path C:TempQualysAllAssetGroupsTextfiles$basename.txt
@(ForEach ($a in $b) {$a.Replace(' ', '')}) > C:TempQualysAllAssetGroupsTextfiles$basename.txt
}

ips.csv

查看您的CSV后,我认为这将更容易重写。比您的工作要容易得多。

$skips = $null, '', ' '
Get-ChildItem C:TempQualysAllAssetGroups*.csv| ForEach-Object {
    $csv = import-csv $_.FullName
    $IPArray = @()
    Foreach($ip in $csv) {
        if(!($ip.ipv4address -in $skips)) {
            $IPArray += $ip.ipv4address
        }
    }
    $IPArray -join ','| Out-File C:TempQualysAllAssetGroupsTextfiles$($_.BaseName).txt
}

最新更新