我試圖讀出一個CSV文件,其中包含用戶名,名稱,姓氏和某些用戶的性別。該腳本應讀出用戶ID並檢查具有此ID的目錄是否已存在,如果不存在,則創建一個。比它應該讀出,用戶具有哪種性別。有了這些信息,腳本就會生成一個文本文件,其中包含適當的稱呼和靜態文本,對男性和女性來說都是一樣的。這是我迄今完成:出現在文本文件中的新行不應該是
#Variables
$script:pgm="welcome"
$script:log="$PSScriptRoot\$pgm.log"
$script:csv="$pgm.csv"
$script:dir="D:\ps\users"
$script:txt="$pgm.txt"
$script:fix="$pgm.fix" # fix is the file with the static text
$script:mrs="Dear Mrs."
$script:mr="Dear Mr."
# Create directories & textfiles
$imp=import-csv $csv -Delimiter ";" -Encoding UTF8
$users=$imp[0..2].Userid
$sex=$imp[0..2].Sex
$sirname=$imp[0..2].SirName
$f=cat $fix
foreach($a in $users) {
if(! (Test-Path $dir\$a)) {
New-Item -Path $dir\$a -ItemType Directory
}
}
foreach($d in $sex) {
if ($d -eq "F") {
foreach($name in $sirname) {
write-output $mrs $name"," | out-file $dir\$a\$txt
}
}
Else {
foreach($name in $sirname) {
write-output $mr $name"," | out-file $dir\$a\$txt
}
}
write-output $f >> $dir\$a\$txt
}
我有兩個鬥爭:
- 腳本總是寫「瓊斯」作爲文本文件名,而忽略其他兩個也只寫'尊敬的先生。' (也對女性用戶)。
- 該腳本將名稱放在單獨的行中。
Write-Host -NoNewLine
適用於此問題,但僅在控制檯中,您無法將其轉換爲文件。有沒有辦法用write-output
來做到這一點?
輸出的文本文件看起來是這樣的:
Dear Mr.
Jones,
welcome to our company!
Your sysadmin
但它應該是這樣的:
Dear Mr. Jones,
welcome to our company!
Your sysadmin
CSV文件:
Userid;GivenName;SirName;Sex
JACKS;Tom;Jackson;M
MILLE;Kate;Miller;F
JONES;Paul;Jones;M
謝謝你你的幫助!
寫入輸出只是寫入管道。通常這些對象在寫入主機或文件時會成爲單獨的行。下面的答案顯示了您可以使用的更簡單的應用程序,但最初的問題源於不瞭解您正在使用的cmdlet的功能。 – Joey
@Joey對不起,我不熟悉腳本和PowerShell,仍然在學習。 – Clam