我不明白在csv上使用get-content

时间:2017-12-14 18:02:06

标签: powershell

为什么我在任何.csv文件的Power-shell控制台中(Get-Content $CSV1)[2]我得到了这个字段,但当我在ISE中这样做时,我得到这样的错误。

$CSV1 = Import-Csv "C:\Users\Administrator\Documents\lab8\usersF.csv"
(Get-Content $CSV1)[2]

usersF.csv内容

GivenName
Ylnum
Dexcd
Igbos
Rzjlr

错误

Cannot index into a null array.
At C:\Users\Administrator\Documents\lab8\ovie_lab7_merged.ps1:5 char:1
+ (Get-Content $CSV1)[2]
+ ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : NullArray

我已经尝试了解决方案@TheIncorrigible1给了我它工作,但现在我想将该数据导出到.csv而不是字符串我得到.csv文件中的字符串长度我该如何修复此?

$CSV1 = Import-Csv -Path "C:\Users\Administrator\Documents\lab8\usersF.csv"
$test = $CSV1.GivenName[4]

$test | Export-Csv "C:\Users\Administrator\Documents\lab8\test.csv"

#TYPE System.String
Length
5

1 个答案:

答案 0 :(得分:2)

所以你遇到的问题是一个简单的类型理解问题。

Import-Csv获取您提供给它的路径并将其导入PSCustomObject。您正尝试Get-Content -Path [PSCustomObject],但这不是-Path参数的受支持类型(如果您阅读帮助主题,则需要[String[]])。

如果您想要第一行,您应该执行以下操作:

$Path = 'C:\Users\Administrator\Documents\lab8\usersF.csv'
@(Get-Content -Path $Path)[1] #Arrays are zero-indexed

可替换地,

$Csv = Import-Csv -Path $Path
$Csv.GivenName[0]

要解决您的修改问题,您不能正确调用Export-Csv。它期望PSCustomObject,但你传递一个字符串。我建议改用Out-File

$CSV1 = Import-Csv -Path C:\Users\Administrator\Documents\lab8\usersF.csv
$test = $CSV1.GivenName[4]

$test |
    OutFile -FilePath C:\Users\Administrator\Documents\lab8\test.csv