Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 我如何将信息段落重新排列成易于获取csv的形式?_Powershell - Fatal编程技术网

Powershell 我如何将信息段落重新排列成易于获取csv的形式?

Powershell 我如何将信息段落重新排列成易于获取csv的形式?,powershell,Powershell,我是PS新手,目前我正在尝试制作一个PS脚本,它可以将包含特定信息的段落重新排列成一种可以轻松地放入csv文件的形式 初始信息如下所示: IP地址:192.168.1.1 主机名:Test 域名:contoso.com IP地址:192.168.1.2 主机名:Test2 域名:contoso.com 我想把这些信息重新排列成这样: IP地址;主机名;领域 192.168.1.1;试验;contoso.com 192.168.1.2;测试2;contoso.com 你能给我举几个例子吗?提前谢谢

我是PS新手,目前我正在尝试制作一个PS脚本,它可以将包含特定信息的段落重新排列成一种可以轻松地放入csv文件的形式

初始信息如下所示: IP地址:192.168.1.1

主机名:Test

域名:contoso.com

IP地址:192.168.1.2

主机名:Test2

域名:contoso.com

我想把这些信息重新排列成这样: IP地址;主机名;领域

192.168.1.1;试验;contoso.com

192.168.1.2;测试2;contoso.com


你能给我举几个例子吗?提前谢谢

我假设信息在一个文本文件中 首先,您需要使用导入CSV导入文件,处理数据并将其导出为NewCSV.CSV

下面是一个代码示例:

Import-Csv C:\test.txt -Delimiter ":" -Header "Name", "Value" |export-csv c:\test.csv -NoTypeInformation
这将创建一个如下所示的文件:

"Name","Value"
"IP Address","192.168.1.1"
"Host Name","Test"
"Domain","contoso.com"
"IP Address","192.168.1.2"
"Host Name","Test2"
"Domain","contoso.com"
您可以使用
-delimiter”;“

以下是一个解决方案:

示例输入文件:

IP Address: 192.168.1.1

Host Name: Test

Domain: contoso.com

IP Address: 192.168.1.2

Host Name: Test2

Domain: contoso.com
IP Address  Host Name Domain     
----------  --------- ------     
192.168.1.1 Test      contoso.com
192.168.1.2 Test2     contoso.com
脚本

Clear-Host

#loads the input file and removes the blank lines
$raw = Get-Content "G:\input\rawinfo.txt" | Where-Object { $_ -ne "" }

#declare results array
$results = @()

#foreach line in the input file
$raw | % {

    #split the line on ": "
    $data = $_ -Split ": "

    #switch on first cell of data
    switch ($data[0]) {

        #store ip address
        "IP Address" { $ipaddress= $data[1] } 

        #store host name
        "Host Name" { $hostname = $data[1] }

        #store domain
        "Domain" {
            $domain = $data[1]

            #since this is the last field for each item

            #build object with all fields
            $item = [PSCustomObject]@{
                "IP Address" = $ipaddress;
                "Host Name" = $hostname;
                "Domain" = $domain;            
            }

            #add object to results array
            $results += $item
        }
    }
}

#output results array
$results
示例输出:

IP Address: 192.168.1.1

Host Name: Test

Domain: contoso.com

IP Address: 192.168.1.2

Host Name: Test2

Domain: contoso.com
IP Address  Host Name Domain     
----------  --------- ------     
192.168.1.1 Test      contoso.com
192.168.1.2 Test2     contoso.com
然后,您可以通过管道将其传输到
导出Csv

$results | Export-Csv "host_info.csv" -Delimiter ";" -NoTypeInformation

谢谢你的回答。也许我被误解了。事实上,我试图把所有的IP地址分类在一列下,第二列是所有的主机名,第三列是所有的域名。对不起,我误解了你的问题。我会在找到解决方案后立即更新。嗨。你能把你已经用过的代码贴出来吗?这很有助于向这些比我聪明的人展示你是如何做到这一点的。