PowerShell变量打印文件中的所有csv列
我有一个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
"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)"
这是子表达式形式
下面的链接有助于了解转义字符和字符串连接。