我正在尝试通过网络将文件从运行 PowerShell 5.0 的 Windows 2012r2 服务器复制到运行 PowerShell 2.0 的 2008 r2 服务器。我尝试使用 Copy-Item 命令执行此操作。执行该命令的脚本是:
$secPassword = ConvertTo-SecureString $password -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ($userName, $secPassword)
$sessionOptions = New-PSSessionOption -SkipCACheck -SkipCNCheck
$session = New-PSSession -Computername $computerName -SessionOption $sessionOptions -Credential $cred
Copy-Item -Path $source -Destination $destination -ToSession $session
执行命令时,我收到以下错误:
Copy-Item:无法索引到 System.IO.FileInfo 类型的对象。位于 C:\Users\pmartin.CLUBSOFTINC\Documents\Repos\Test\PowerShell\test.ps1:21 char:1 + Copy-Item -Path $source -Destination $destination -ToSession $session + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:InvalidOperation:(0:Int32) [Copy-Item],RuntimeException + FullyQualifiedErrorId:CannotIndex
做了一些之后研究,这似乎是由 PSv2 中的兼容性问题引起的,其中从非数组元素返回索引 [0] 处的值不会返回该元素(相比之下,PSv5 会返回该元素)。
这个问题有解决方法吗?如果有,我该如何在脚本中实现它?