Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell变量打印文件中的所有csv列_Powershell_Import Csv - Fatal编程技术网

PowerShell变量打印文件中的所有csv列

PowerShell变量打印文件中的所有csv列,powershell,import-csv,Powershell,Import Csv,我有一个csv文件: "SamAccountName","UserPrincipalName","Telephonenumber" "TUser","TUser@domain.com","+15551112222" 我循环浏览文件: $csvfile = Import-Csv $path foreach ($row in $csvfile) { Write-Host $row.SamAccountName, "$row.SamAccountName" } 第一个$row.SamAcc

我有一个csv文件:

"SamAccountName","UserPrincipalName","Telephonenumber"
"TUser","TUser@domain.com","+15551112222"
我循环浏览文件:

$csvfile = Import-Csv $path
foreach ($row in $csvfile) {
    Write-Host $row.SamAccountName, "$row.SamAccountName"
}
第一个
$row.SamAccountName
打印csv文件中的sam帐户名称字符串。如果我将同一个变量放在引号中,它将打印一个数组。我的输出如下所示:

TUser @{SamAccountName=TUser; UserPrincipalName=TUser@domain.com; Telephonenumber=+15551112222}.SamAccountName
"$row.SamAccountName"
"$($row.SamAccountName)"

如果我在
$row.SamAccountName
上执行
.GetType()
,则表示它是一个
系统.String
。那么为什么把它放在引号里会打印数组呢?

它不是打印数组,而是打印对象的文本解释

如果要在字符串中插入对象属性,则需要使用语法
“$($object.property)”
。因此,按以下方式进行更改将有效:

$csvfile = Import-Csv $path
foreach ($row in $csvfile) {
    Write-Host $row.SamAccountName, "$($row.SamAccountName)"
}
或使用格式字符串运算符:

$csvfile = Import-Csv $path
foreach ($row in $csvfile) {
    "{0}" -f $row.SamAccountName
}

它不是打印数组,而是打印对象的文本解释

如果要在字符串中插入对象属性,则需要使用语法
“$($object.property)”
。因此,按以下方式进行更改将有效:

$csvfile = Import-Csv $path
foreach ($row in $csvfile) {
    Write-Host $row.SamAccountName, "$($row.SamAccountName)"
}
或使用格式字符串运算符:

$csvfile = Import-Csv $path
foreach ($row in $csvfile) {
    "{0}" -f $row.SamAccountName
}

当你这样写的时候:

TUser @{SamAccountName=TUser; UserPrincipalName=TUser@domain.com; Telephonenumber=+15551112222}.SamAccountName
"$row.SamAccountName"
"$($row.SamAccountName)"
只有
$row
被识别为变量的一部分,因为
$row
是它输出的数组。如果要将整个语句写入字符串,请尝试查看
.ToString()
或将原始语句包装到如下变量中:

TUser @{SamAccountName=TUser; UserPrincipalName=TUser@domain.com; Telephonenumber=+15551112222}.SamAccountName
"$row.SamAccountName"
"$($row.SamAccountName)"

当你这样写时,它会考虑变量的所有部分。

TUser @{SamAccountName=TUser; UserPrincipalName=TUser@domain.com; Telephonenumber=+15551112222}.SamAccountName
"$row.SamAccountName"
"$($row.SamAccountName)"
只有
$row
被识别为变量的一部分,因为
$row
是它输出的数组。如果要将整个语句写入字符串,请尝试查看
.ToString()
或将原始语句包装到如下变量中:

TUser @{SamAccountName=TUser; UserPrincipalName=TUser@domain.com; Telephonenumber=+15551112222}.SamAccountName
"$row.SamAccountName"
"$($row.SamAccountName)"

这样,它将考虑变量的所有部分。

< P>在“$ROW。SamAccountName”周围使用双引号。我们可以从您的输出中看到:

TUser @{SamAccountName=TUser; UserPrincipalName=TUser@domain.com; Telephonenumber=+15551112222}.SamAccountName
这是您的Write-Host语句。首先,编写$row.SamAccountName,然后将整个行对象(即数组)添加到数组中。双引号中的.SamAccountName被视为文本字符串,因此,它不会访问该行以检索其值

如果您仅将$row置于双引号中,您将得到以下结果:

@{SamAccountName=TUser; UserPrincipalName=TUser@domain.com; Telephonenumber=+15551112222}
如果要在变量周围使用双引号,请在尝试访问子表达式时使用此引号

"$($row.SamAccountName)"
这是子表达式形式

下面的链接有助于了解转义字符和字符串连接。

通过在“$row.SamAccountName”周围使用双引号,可以告诉PowerShell打印该行,即该行中的对象数组。我们可以从您的输出中看到:

TUser @{SamAccountName=TUser; UserPrincipalName=TUser@domain.com; Telephonenumber=+15551112222}.SamAccountName
这是您的Write-Host语句。首先,编写$row.SamAccountName,然后将整个行对象(即数组)添加到数组中。双引号中的.SamAccountName被视为文本字符串,因此,它不会访问该行以检索其值

如果您仅将$row置于双引号中,您将得到以下结果:

@{SamAccountName=TUser; UserPrincipalName=TUser@domain.com; Telephonenumber=+15551112222}
如果要在变量周围使用双引号,请在尝试访问子表达式时使用此引号

"$($row.SamAccountName)"
这是子表达式形式

下面的链接有助于了解转义字符和字符串连接。