我正在努力让这个脚本工作。
我正在尝试使用powershell处理所有csv文件(一次一个)并将每个csv文件保存为单独的文本文件。
在文本文件中,我希望将所有IP放在一行中用逗号分隔(例如192.168.73.44,192.168.75.224,192.168.76.45,192.168.77.105,192.168.77.237,192.168.78.33,192.168。 78.92)
因此,此脚本应从特定csv文件中提取每个ipv4address列值,并在每个IP地址后添加逗号“,”并将该特定csv中的所有IP附加到文本文件中。
我的脚本正在处理csv并生成文本文件,但它只是将csv中找到的第一个IP写入文本文件。
Get-ChildItem C:\Temp\Qualys\All\AssetGroups\*.csv | Foreach-Object {
$basename = $_.Name
$detail = import-csv $_
foreach ($csv in $detail) {
$Outputs =@()
$field = $csv.ipv4address
$field = $field + ","
$Outputs +=$field
}
$Outputs | Out-File "C:\Temp\Qualys\All\AssetGroups\Textfiles\$basename.txt"
$regexA = "(\s,)"
$regexB = "\s"
(Get-Content C:\Temp\Qualys\All\AssetGroups\Textfiles\$basename.txt | Out-String) -replace $regexA,' ' -replace "`r?`n(?!`r?`n)" -join ' ' -replace $regexB, ''|
Set-Content C:\Temp\Qualys\All\AssetGroups\Textfiles\$basename.txt
$b = Get-Content -Path C:\Temp\Qualys\All\AssetGroups\Textfiles\$basename.txt
@(ForEach ($a in $b) {$a.Replace(' ', '')}) > C:\Temp\Qualys\All\AssetGroups\Textfiles\$basename.txt
}
看完你的CSV之后,我想这会更容易重写。跟你正在做的事情要容易得多。
$skips = $null, '', ' '
Get-ChildItem C:\Temp\Qualys\All\AssetGroups\*.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:\Temp\Qualys\All\AssetGroups\Textfiles\$($_.BaseName).txt
}