我是Powershell的新手。我有一个名为samplemap.csv的csv文件,其中包含values。我必须从文件中读取每个值,例如用于定义paris_App值的变量。
CntryApp Version
paris_App 2.19
ila_App 5.3
sga_App 3.10
我使用的代码是打印所有CntryApp版本,而不是分别打印每个CntryApp版本
Import-CSV "H:\samplemap.csv"
$CntryApp = @()
$Version = @()
Import-CSV "H:\samplemap.csv" -Delimiter ';'
ForEach-Object {
$CntryApp += $_.CntryApp
$Version += $_.Version
}
预期将2.19、5.3、3.10分配给单个变量。我的意思是每个CntryApp版本都要分配给一个变量。
答案 0 :(得分:1)
如果我对您的理解正确,那么您需要输入文件中每个条目的单独变量,例如$paris_App
?尽管可以使用Set-Variable
之类的方法来实现,但是更好的方法是创建这些键值对的哈希表。如果知道名称,则可以调用该版本。
$apps = @{}
Import-CSV "H:\samplemap.csv" -Delimiter ';' | ForEach-Object{
$apps[$_.CntryApp] = $_.Version
}
$apps['sga_app']
如果这些CntryApp包含重复项,则此方法将失败。
答案 1 :(得分:0)
要从.csv
文件(在这种情况下用空格分隔)导入数据,您必须指定分隔符(除非它与可能取决于您的区域设置的默认分隔符匹配,并且我很确定空间是不是默认值)。
如果以后要使用该数据,最好将导入的值保存到变量中:
$t = Import-CSV "$($pwd.path)\samplemap.csv" -Delimiter ' '
保存后,可以使用以下结构进行访问
# All values of CntryApp
$t.CntryApp
# Output
paris_App
ila_App
sga_App
# CntryApp and version of first object
$t[0]
# Output
CntryApp Version
-------- -------
paris_App 2.19
# Version of first app
$t[0].Version
# Output
2.19
正如您提到的key:value方案一样,将hastable视为@Matt suggested是很自然的(尽管看起来可能更复杂)。