我在使用 Copy-Item 和目标变量时遇到问题

I have an issue with using Copy-Item and a Veriable for destination

这可能很简单。但是我可以弄清楚我的简单复制脚本出了什么问题。 我有一个共享目录,我正在从中复制项目。我正在打印控制台的目标路径,所以我知道它是正确的但是我收到了一个我不明白的 powershell 错误。

这是我的脚本

#Files to copy
#Get Installers from folder
$APPS = Get-ChildItem \Server1\shared\APPS -Name 

#ForEach loop to identify and move files
ForEach($APP in $APPS) {
    $dest = "\Server1\Shared\APPS$APP"
    #Write-host to see destination path on console
    write-host $dest 
    #copy item from destination path to local directory
    Copy-Item $dest -Destination "c:\apps\"
    
 }

这看起来很简单。但我不明白为什么会收到以下错误

 \Server1\Shared\APPS\LTCDesktopSetup.exe
Copy-Item : The filename, directory name, or volume label syntax is incorrect.
At C:\Users\computer1\documents\PowerShell\Moving Installer to local drive.ps1:13 char:2
    +     Copy-Item $dest -Destination "c:\apps\"
    +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Copy-Item], IOException
    + FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.CopyItemCommand

奥古斯托,

我建议使用以下语法:

$APPS = (Get-ChildItem "\mybooklive\CMShared\NAS-Downloads" -filter *.exe).FullName

ForEach ($App in $Apps) {
    copy-item "$APP" -Destination "G:\Test\Copy-Test" -Force
}

或更紧凑的:

$APPS = (Get-ChildItem "\mybooklive\CMShared\NAS-Downloads" -filter *.exe).FullName |
    copy-item -Destination "G:\Test\Copy-Test" -Force

获取全名与名称,这样您就不必重新添加源路径。 使用 -Filter 只获取 .exe 文件(这是变量名称 $Apps 的假设)。 原力会处理一些 IO 问题,例如文件已经存在。

HTH 当然,您必须用您的路径替换我的测试路径。