将.csv拆分为数组

时间:2016-01-11 09:29:38

标签: arrays csv powershell

我有一个包含2行信息的CSV文件。我想同时使用它们,但不是作为1个数组。

在此示例中,我的CSV如下所示:

brew uninstall open-cobol

我的目标是使用计算机和名称根据我的CSV中的值将所有者添加到AD中的计算机。为了实现这一点,我觉得我需要将这些值拆分为2个数组,然后我就可以为每个循环

4 个答案:

答案 0 :(得分:1)

您可以为CSV的每一列获取单独的数组:

$csv = Import-Csv 'C:\path\to\your.csv'

$names     = $csv | Select-Object -Expand Name
$computers = $csv | Select-Object -Expand Computer

答案 1 :(得分:1)

由于额外的空格,您的$(function(){ // Your code here }); 文件似乎格式不正确。这是初学者的解决方案:

阅读CSV

Get-Help 'about_Split' -ShowWindow

对于修改后的Ansgar Wiechers解决方案(无疑比我的初学者更聪明),请阅读$separator = " ;" ### or $separator = " ", ";" $option = [System.StringSplitOptions]::RemoveEmptyEntries $myFile = 'D:\bat\SO\34718014.csv' ForEach ($strLine in Get-Content $myFile) { $asplit = $strLine.Split($separator, $option) if (($asplit[0] + $asplit[1] -ne "NameComputer") -and ($asplit[0] + $asplit[1] -ne $Null)) { '['+$asplit[0]+']['+$asplit[1]+']' #debug output # # place your code to add owner to computer in AD here # } else { "skipped line: " + $strLine # debug output: skipped CSV header, skipped empty line(s) } } 。但是,它会在Get-Help 'Import-Csv' -ShowWindow中保留额外的尾随空格:

$Names

<强>输出

Write-Host "Ansgar Wiechers' solution:"

$csv = Import-Csv 'D:\bat\SO\34718014.csv' -Delimiter ";"

$names     = $csv | Select-Object -Expand "Name "
$computers = $csv | Select-Object -Expand Computer

For ($i=0; $i -le $names.Count; $i++) {
    ('[' + $names[$i] + '][' + $computers[$i] + ']')
}

答案 2 :(得分:0)

您需要@native private def sampleMethod(argOne: Long): Int 功能。 这里有一些很好的信息:http://ss64.com/ps/split.html 但基本上是:

split()

答案 3 :(得分:0)

我找到了我的问题的解决方案,因为我的列表已经完成,并且为了将csv拆分为2个文件并使用此代码完成工作

$names = Get-Content Names.txt
$comp = Get-Content computers.txt

for($x=0; $x -lt $comp.length; $x++)
{
    Write-Host $comp[$x]
    Write-Host $names[$x]
    Get-ADComputer $comp[$x] -Properties * | Set-ADComputer -ManagedBy $names[$x]
}