【发布时间】:2022-01-05 23:30:38
【问题描述】:
关于某些运算符的正确使用,我有一个非常棘手的问题。
我正在编写一个从 CSV 中提取数据的脚本。该脚本要求用户输入位置#,然后应该输出其服务器的 IP。
脚本按预期工作,除了位置编号还包含其他文本(如数字或特殊字符)的行。
这是一个示例 CSV 来说明我的问题:
Loc#,State,Server IP
1,NY,10.0.0.1
2,CA,10.0.0.2
3,WA,10.0.0.3
4 (inp),KY,10.0.0.4
我的脚本看起来像这样:
$CSV = import-csv C:\users\Self\MyProject.csv
$location = read-host "enter the location #"
foreach( $row in $CSV){
if($row.loc# -eq $location)
{
write-host $row.'Server IP'
}
现在,除非用户选择位置 4,否则此脚本将按预期工作。如果用户选择位置 4,则 $location 变量留空。
好的,这有点道理,因为我使用的是 -eq 运算符。但即使我使用 -contains 运算符,我也会得到相同的结果。
这是显示我的问题的另一种方式:
$number = "10 ten"
if ($number -contains "10"){ (Write-Host "true")} else{ write-host "false"}
false
现在,既然 $number 变量确实包含“10”,为什么输出不显示为“true”?
非常感谢任何帮助, 谢谢
【问题讨论】:
-
尝试使用
-match运算符 -
如果你选择
-match,那么我会选择-match “^$location” -
我愿意
-match "^$location\b" -
谢谢大家! -match 运算符成功了。
标签: powershell csv operators