Powershell脚本将文件读入数组

时间:2018-04-18 20:49:29

标签: powershell

我有一个我正在制作的剧本。我希望它在名为ComputerName的列中读取一个名为UserName的列。

我的CSV文件如下所示:

ComputerName | Username
computer01   | user1
computer02   | user2

Pipes表示excel中的单元格。

这是我的剧本:

$computerName = @()
$userName = @()

Import-Csv C:\test\script\Computername_username_test.csv -Delimiter "|" |`
    ForEach-Object
        {
            $computerName += $_.ComputerName
            $userName += $_.UserName
        }

$destination = New-Item -ItemType Directory -Path C:\test\$userName\dictionary_Files\ -force
$fileList = Get-WmiObject -Class CIM_DataFile -Filter "Drive='C:' And Extension='dic'" -Computername $computerName

foreach ($file in $fileList)
{
    $drive, $path = $file.Name.Split('\',2)
    $drive = $drive -replace ':','$'
    $remoteFile = "\\$computerName\$drive\$path"
    Write-Verbose "Copy $remoteFile to $destination"
    Copy-Item $remoteFile -Destination $destination -Confirm
}

我的目标是在远程计算机的C盘中搜索所有带.dic扩展名的文件,并将它们复制到一个文件夹内的位置,该文​​件夹的名称与excel表中的用户名相同。

当我运行时,我得到以下内容:

PS C:\Test\Script> C:\Test\Script\DicFiles03_importCSV.ps1
cmdlet ForEach-Object at command pipeline position 2
Supply values for the following parameters:
Process[0]: 

            $computerName += $_.ComputerName
            $userName += $_.UserName

Get-WmiObject : Cannot validate argument on parameter 'ComputerName'. The argument is null, empty, or an element of the argument 
collection contains a null value. Supply a collection that does not contain any null values and then try the command again.
At C:\Test\Script\DicFiles03_importCSV.ps1:13 char:102
+ ...  -Filter "Drive='C:' And Extension='dic'" -Computername $computerName
+                                                             ~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Get-WmiObject], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.GetWmiObjectCommand

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我认为它是因为你在下一行{之后有foreach-object PowerShell是一种脚本语言,所以它特别关于行结尾。