我在将变量传递到CSV时遇到了问题。我需要通过一个电子表格显示所有技能的电子邮件。每种技能的电子邮件都是相同的。我只想让$email填充我的csv。它不会通过,并且只在列中显示$email而不是test@test.com。
我是powershell的新手,所以非常感谢任何指导。谢谢。
-这是我的脚本
Add-Content -Path C:\temp\test.csv -Value‘“用户名”,“技能名称”,“级别”’
$Email = "test@test.com“
$agent = @(
}
'"$Email","T1","4"‘
'"$Email","T2","6"‘
'"$Email","T3","7"‘
'"$Email","Training","1"‘
'"$Email","Supervisor","8"‘
)
$agent | foreach { Add-Content -Path C:\temp\temp.csv -Value $_ }
发布于 2021-09-26 03:13:34
因为您是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在这里,我只需设置电子邮件变量,然后创建一个包含标题和5条数据记录的很大的Here字符串。因为我在here字符串上使用了双引号,所以将在其中检测到变量$Email。带有单引号的here字符串将不会正确运行。
然后,我通过管道传递$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 in it。如果需要,可以使用notype参数来消除这一点。还值得注意的是,输出文件中的双引号都是由Export-csv添加的,而不是脚本中双引号的副本。
编辑。在powershell中,管道是一种非常简单和灵活的方式。出于这个原因,像Out-File和Export-Csv这样的cmdlet可以很好地与提供输入流的管道一起工作。许多循环控制、初始化和完成工作都是由PS在幕后处理的。
https://stackoverflow.com/questions/69322128
复制相似问题