我刚刚开始使用 Powershell,并且正在编写一些基本的脚本,从 foreach 和 if、elseif 构造开始。
我对 foreach 循环有疑问。
我试图用用户给出的参数编写一个简单的代码。我有一个包含 2 列的 CSV 文件:Zenskie(女性)和 Meskie(男性),其中填满了姓名。我的代码是在 CSV 中查找用户给出的名称,并作为输出提供有关性别的信息。
CSV 文件的一部分:
Zenskie;Meskie
Ada;Aaron
Adamina;Abdon
Adela;Abel
Adelajda;Abelard
Adriana;Abraham
Adrianna;Achilles
Agata;Adam
Agnieszka;Adelard
Aida;Adnan
Bogna;Dawid
我还为我的妻子添加了一个小插曲 - 应该有一个专门针对她的名字的评论,在这里我有一个问题。结果是应该的,但它显示了多次(我猜与 CSV 中的行一样多)。
如果用户给出的输入不在列表中,我还尝试在最后添加一个“else”部分。但是当我这样做时,它会给出之前“elseif”的结果。
我尝试将另一个 elseif 与“elseif ($UserName -ne $Man) 一起使用,但它也给了我错误的答案。
我敢打赌我在这里遗漏了一些简单的东西......
Param (
[string]$UserName = (Read-Host " Tell me your name ")
)
$Names = Import-Csv -Path C:\Powershell\Moje_nowe\Lista_imion3.csv -Delimiter ";"
ForEach ($item in $Names) {
$Women = $item.("Zenskie")
$Man = $item.("Meskie")
if ($UserName -eq $Women) {
Write-Output "$UserName you are women!"
}
elseif ($UserName -eq $Man) {
Write-Output "$UserName you are man!"
}
elseif ($UserName -eq "Bogna") {
Write-Output "Kiss me!! :)"
}
else {
Write-Output "$UserName you have an odd name"
}
}
预期结果:
对于输入博尼亚:
Tell me your name: bogna
Kiss me!! :)
实际结果:
Kiss me!! :)
Kiss me!! :)
Kiss me!! :)
等等
当我在输入不在列表中时添加部分时:
预期的:
Tell me your name: bdsdsd
bdsdsd you have an odd name
实际的:
无论我输入什么
bdsdsd you have an odd name
bdsdsd you have an odd name
bdsdsd you have an odd name
等等