簡體   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