我在使用 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
当然,您必须用您的路径替换我的测试路径。
这可能很简单。但是我可以弄清楚我的简单复制脚本出了什么问题。 我有一个共享目录,我正在从中复制项目。我正在打印控制台的目标路径,所以我知道它是正确的但是我收到了一个我不明白的 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 当然,您必须用您的路径替换我的测试路径。