[英]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.