首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用powershel解析从CSV到txt文件的脚本

使用powershel解析从CSV到txt文件的脚本
EN

Stack Overflow用户
提问于 2022-10-12 09:04:26
回答 2查看 51关注 0票数 1

我有一个包含数据的.csv文件,我正试图将这些数据解析为一个txt文件。

.csv文件的内容如下所示

代码语言:javascript
复制
Name,Tag,Description
ServerA,BOH,Scheduling
ServerB,FOH,PrintServer
ServerC,BOH,DC

我正在编写一个脚本,从该.csv导入数据并写入txt文件。下面是我试图让输出看起来像什么。

代码语言:javascript
复制
ServerA:
    nodename: ServerA
    description: Scheduling
    Tag: BOH
    username: svc_act
    osFamily: windows
ServerB:
    nodename: ServerB
    description: PrintServer
    Tag: FOH
    username: svc_act
    osFamily: windows
ServerC:
    nodename: ServerC
    description: DC
    Tag: BOH
    username: svc_act
    osFamily: windows

为了得到这个结果,我在下面的代码中遗漏了一些东西,但无法解决。谢谢你的帮助

代码语言:javascript
复制
$servers = import-csv -path C:\Temp\Servers.csv -UseCulture | ft   

$output = $Servers | ForEach {
          foreach($server in $servers){
                "{$Server.name}"
                "nodename    = {$Server.name}"
                "description = {$Server.description}"
                "tag         = {$Server.tag}"
                "username: svc_act"
                "osFamily: windows"
                 }
             }    
    
$output | Out-File -FilePath C:\temp\Serverstagdesc.txt
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-12 10:14:43

您期望的输出类似于Yaml,因此我建议您使用一个专用的解析器:PowerShell-Yaml

代码语言:javascript
复制
Install-Module powershell-yaml

$HashTable = [Ordered]@{}
import-csv -path C:\Temp\Servers.csv |ForEach-Object {
    $HashTable[$_.Name] = [Ordered]@{
        nodename    = 'BOERPT01'
        description = $_.Description
        tag         = $_.Tag
    }
}

$HashTable |ConvertTo-Yaml
代码语言:javascript
复制
Server1:
  nodename: BOERPT01
  description: Scheduling
  tag: BOH
Server2:
  nodename: BOERPT01
  description: PrintServer
  tag: FOH
Server3:
  nodename: BOERPT01
  description: DC
  tag: BOH
票数 4
EN

Stack Overflow用户

发布于 2022-10-12 09:48:31

代码语言:javascript
复制
$input = @'
Name,Tag,Description
Server,BOH,Scheduling
Server2,FOH,PrintServer
Server3,BOH,DC
'@ | 
    ConvertFrom-Csv 

$template = "Server{0}:`r`n`tnodename: {1}`r`n`tdescription: {2}`r`n`tTag: {3}`r`n"
$counter = 0;

$formatedItems = $input | 
    ForEach-Object {
        $counter++; 
        return [String]::Format($template, $counter, $_.Name, $_.Description, $_.Tag) 
        }

$output = [String]::Join('', $formatedItems)
$output | Out-File -FilePath ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74039217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档