如何摆脱@{name =xyz}而只使用xyz?

问题描述 投票:0回答:1

我有一个 powershell 脚本,我首先在其中导入 csv 并使用该 csv 的内容。使用时,它的形式是:@{name =xyz}

$csv = Import-Csv -Path "C:\test\CLEAN-UP.csv" -Delimiter ";"

Foreach ($item In $csv) {
    Write-Output $item
    $path = "C:\Users\$item\Downloads"
    Write-Output $path

}

路径是这样的: C:\Users@{name =xyz}\Downloads

CSV 看起来像这样:

名字
xyz
zyx

我现在如何修改我的脚本,使其路径中只有 xyz?

我尝试了此页面上的所有内容,但没有任何效果对我来说:Select Method 返回类似 @{Name=

的字符串
windows powershell scripting
1个回答
0
投票

您需要过滤输入,使其不再包含标头信息,或者在引用输入值时,明确指定您需要“名称”值。有几种方法可以做到这一点(可能还有其他方法)。

在最初的

Import-Csv
步骤中处理它

$csv = Import-Csv -Path "C:\test\CLEAN-UP.csv" -Delimiter ";" | select -ExpandProperty Name
Foreach ($item In $csv) {
    Write-Output $item
    $path = "C:\Users\$item\Downloads"
    Write-Output $path
}

Foreach
步骤内处理

$csv = Import-Csv -Path "C:\test\CLEAN-UP.csv" -Delimiter ";" 
Foreach ($item In $csv.name) {
    Write-Output $item
    $path = "C:\Users\$item\Downloads"
    Write-Output $path
}

根据需要单独引用该值(当您从导入的 CSV 引用多个列,因此不想提前过滤它时最有用)

$csv = Import-Csv -Path "C:\test\CLEAN-UP.csv" -Delimiter ";"
Foreach ($item In $csv) {
    Write-Output $item.name
    $path = "C:\Users\$($item.name)\Downloads"
    Write-Output $path
}
© www.soinside.com 2019 - 2024. All rights reserved.