繁体   English   中英

Powershell CSV 可变发行

[英]Powershell CSV Variable Issue

我在将变量传递到 CSV 时遇到问题。我需要将 email 传递给显示所有技能的电子表格。 每个技能都是一样的email。 我只是想让 $email 填充我的 csv。它没有通过,只显示 $email 而不是列中的 test@test.com。

我是 powershell 的新人,非常感谢任何指导。 谢谢。

----------这是我的脚本------------------------

Add-Content -Path C:\temp\test.csv -Value '"User Name","Skill Name","Level"'

$Email = "test@test.com"

$代理=@(

}

'"$Email","T1","4"'

'"$Email","T2","6"'

'"$Email","T3","7"'

'"$Email","培训","1"'

'"$Email","主管","8"'

)

$代理| foreach { Add-Content -Path C:\temp\temp.csv -Value $_ }

因为您是 Powershell 的新手,所以我将向您展示两种构建问题的替代方法。 这些可能会帮助您习惯 powershell 的一些功能。

$Email = 'test@test.com'

$mytext = @"
"User Name","Skill Name","Level"
"$Email","T1","4"
"$Email","T2","6"
"$Email","T3","7"
"$Email","Training","1"
"$Email","Supervisor","8"
"@


$mytext | Out-file Mycsv.csv

在这里,我只是设置了 Email 变量,然后用 header 和其中的五个数据记录创建一个大的 here 字符串。 因为我在此处的字符串上使用了双引号,所以会在其中检测到变量 $Email。 带有单引号的此处字符串不会正确运行。

然后,我一次一行地通过管道传递 $mytext,然后 Out-file 将所有这些收集到一个文件中。

这是第二种方法:

$Email = 'test@test.com'

$myarray = @(
       [PsCustomobject]@{"User Name" = $Email; "Skill Name" = "T1"; "Level" = 4}
       [PsCustomobject]@{"User Name" = $Email; "Skill Name" = "T2"; "Level" = 6}
       [PsCustomobject]@{"User Name" = $Email; "Skill Name" = "T3"; "Level" = 7}
       [PsCustomobject]@{"User Name" = $Email; "Skill Name" = "Training"; "Level" = 1}
       [PsCustomobject]@{"User Name" = $Email; "Skill Name" = "Supervisor"; "Level" = 8}
)

$myarray | Export-Csv myothercsv.csv

在这里,我设置了变量 Email,然后创建了一个自定义对象数组,每个对象都具有相同的命名属性。

然后我通过管道将数组传递给 Export-Csv,它将所有内容转换为 Csv 格式。 值得注意的是,Export-Csv V5 抛出了一行,其中写着#TYPE。 这并不难消除,如果需要,可以使用 notype 参数。 还值得注意的是,output 文件中的双引号都是由 Export-csv 添加的,而不是脚本中双引号的副本。

编辑 管道是在 powershell 中完成任务的一种非常简单和灵活的方式。因此,像 Out-File 和 Export-Csv 这样的 cmdlet 可以很好地与提供 stream 输入的管道一起工作。 大量的循环控制、初始化、终结等繁琐的工作,都是由PS在幕后处理的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM