需要一些帮助来构建一个PowerShell脚本来帮助进行一些基本的字符串操作。我知道有足够的权力来解决问题,但无法弄清楚语法或编码是否有效。
我有一个看起来像这样的文本文件 -
Here is your list of servers:
server1
server2.domain.local
server3
Total number of servers: 3
我需要获取该文本文件并删除第一行和最后一行(始终是第一行和最后一行。)然后我需要采取所有其他行并基本上将其转换为CSV文件。
最终输出应该是一个看起来像这样的文本文件 -
server1,server2.domain.local,server3
有关从哪里开始的任何建议?谢谢!
答案 0 :(得分:1)
您可以尝试:
$a = Get-Content C:\temp\M.TXT # Where M.TXT is your original file
$a[1..($a.count-2)] | % {$s=""} {$s+=$_+","}{$s.trim(",") | Out-File m.csv} # M.CSV is the result file
答案 1 :(得分:0)
以下是其他几种方式。
(Get-Content foo.txt | Where {$_ -notmatch '^\s*$'} | Select -Skip 1 |
Select -Skip 1 -Last 2E9) -join ',' > foo.csv
如果您碰巧拥有PowerShell Community Extensions(对于Skip-Object):
(Get-Content foo.txt | Where {$_ -notmatch '^\s*$'} |
Skip-Object -First 1 -Last 1) -join ',' > foo.csv
请注意,Where {$_ -notmatch '^\s*$'}
会消除任何空行。
答案 2 :(得分:0)
您可以使用范围运算符:
$content = Get-Content D:\Scripts\Temp\test1.txt
$content[1..($content.count-2)] -join ',' | Out-File servers.txt
最好导出到csv文件,以便您可以将其导回并对服务器名称进行操作:
$content = Get-Content D:\Scripts\Temp\test1.txt
$content[1..($content.count-2)] | Select-Object @{Name='ComputerName';e={$_}} | Export-Csv servers.csv -NoTypeInformation