我有CSV文件,其列名为Users。该列有3行一个单元格
例:
Domain\User0 Domain\User1 Domain\Group
$entry = Import-Csv Input.csv | select -First 1 | %{$_.Users}
$user0 = $entry[0]
$user1 = $entry[1]
$group = $entry[2]
我输出为:
PS> Write-Host $user0 Domain\User0 Domain\User1 Domain\Group PS> Write-Host $user1 PS> Write-Host $group
我需要输出像
PS> Write-Host $user0 Domain\User0 PS> Write-Host $user1 Domain\User1 PS> Write-Host $group Domain\Group
在换行符处拆分字段:
$entry = Import-Csv Input.csv |
Select-Object -First 1 |
ForEach-Object {$_.Users -split '\r\n' }
或者更简单:
$entry = (Import-Csv Input.csv | Select-Object -Expand Users -First 1) -split '\r\n'
我相信这将是一个CRLF问题。
$entry = ((Get-Content File.csv) -replace "(?<!\r)\n","`r`n" | ConvertFrom-Csv).Users
$user0 = $entry[0]
$user1 = $entry[1]
$group = $entry[2]
您需要使用CRLF替换仅具有LF字符的行,然后从CSV格式读取。
如果您的(有效)Input.csv
内容如下:
> Get-Content .\Input.csv
"Users"
"Domain\User0
Domain\User1
Domain\Group"
$user0,$user1,$group = (Import-Csv Input.csv)[0].Users -split '\r?\n'
将拆分并直接分配变量
去做就对了:
$user0, $user1, $Group=(Import-Csv C:\temp\Input.csv).Users