Powershell 脚本在 "Copy-Item" 命令中失败
Powershell script failingi at "Copy-Item" command
我是 Powershell 新手。我写了一个 .ps1 脚本来做很多事情,所有这些都完美地执行,除了涉及“复制项目”命令时,我用它来复制 (Windows 10) 桌面到另一个文件夹。
它在“Copy-Item”中的连字符处失败。我有一种感觉,我要么在其中一条路径中缺少“*”。或者有一个不应该的地方。我已经尝试过各种组合,但没有任何乐趣。
出于测试目的,我在桌面上有 3 个项目:1) 文件夹快捷方式,2) Powershell 脚本快捷方式,以及 3) GodMode 'folder'.
提前感谢您的帮助。以下是代码的一个子集:
$env:path += ";D:\PowershellScriptsFolder" # this is the location of my ps1
# (a bunch of code here, all of which runs fine) #
# Desktop
# Define Variables
$DestinationPath = "D:\folder1\subfolder\*"
$SourcePathRoot = 'C:\Users\Sfrn\Desktop\' # this is the location of my Win 10 desktop
#
Remove-Item -Recurse -Path $DestinationPath -Force
(*** 这是它失败的地方:***)
Copy-Item -Recurse -Path $SourcePathRoot -Destination $DestinationPath -Force # this is line 32
(*** 这是错误输出 - 字符 5 是“Copy-Item”中的连字符:***)
Copy-Item:路径中有非法字符。
在 D:\Dropbox\DB_AppData\PowerShell_and_Bat\CopyToBackup_2.ps1:32 char:5
-
Copy-Item -Recurse -Path $SourcePathRoot -Destination $Destinatio ...
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : InvalidArgument: (D:\Dropbox\DB_AppData\Desktop*:String) [复制项目], ArgumentException
- FullyQualifiedErrorId : CreateDirectoryArgumentError,Microsoft.PowerShell.Commands.CopyItemCommand
Copy-Item:路径中有非法字符。
在 D:\Dropbox\DB_AppData\PowerShell_and_Bat\CopyToBackup_2.ps1:32 char:5
-
Copy-Item -Recurse -Path $SourcePathRoot -Destination $Destinatio ...
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : InvalidArgument: (desktop.ini:FileInfo) [复制项目], ArgumentException
- FullyQualifiedErrorId : CopyDirectoryInfoItemArgumentError,Microsoft.PowerShell.Commands.CopyItemCommand
Copy-Item:路径中有非法字符。
在 D:\Dropbox\DB_AppData\PowerShell_and_Bat\CopyToBackup_2.ps1:32 char:5
-
Copy-Item -Recurse -Path $SourcePathRoot -Destination $Destinatio ...
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : InvalidArgument: (Dropbox.lnk:FileInfo) [复制项目], ArgumentException
- FullyQualifiedErrorId : CopyDirectoryInfoItemArgumentError,Microsoft.PowerShell.Commands.CopyItemCommand
Copy-Item:路径中有非法字符。
在 D:\Dropbox\DB_AppData\PowerShell_and_Bat\CopyToBackup_2.ps1:32 char:5
-
Copy-Item -Recurse -Path $SourcePathRoot -Destination $Destinatio ...
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : InvalidArgument: (OpenApps.lnk:FileInfo) [复制项目], ArgumentException
- FullyQualifiedErrorId : CopyDirectoryInfoItemArgumentError,Microsoft.PowerShell.Commands.CopyItemCommand
Copy-Item:路径中有非法字符。
在 D:\Dropbox\DB_AppData\PowerShell_and_Bat\CopyToBackup_2.ps1:32 char:5
-
Copy-Item -Recurse -Path $SourcePathRoot -Destination $Destinatio ...
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : InvalidArgument: (D:\Dropbox\DB_AppData\Desktop*:String) [复制项目], ArgumentException
- FullyQualifiedErrorId : CreateDirectoryArgumentError,Microsoft.PowerShell.Commands.CopyItemCommand
(*** 错误输出结束:***)
(一堆代码继续到这里运行,全部没问题)
结束
你的星号放错地方了。它需要在源目录路径中,而不是目标目录中,如下所示:
$SourcePathRoot = "C:\Users\Sfrn\Desktop\*"
$DestinationPath = "D:\folder1\subfolder\"
我是 Powershell 新手。我写了一个 .ps1 脚本来做很多事情,所有这些都完美地执行,除了涉及“复制项目”命令时,我用它来复制 (Windows 10) 桌面到另一个文件夹。
它在“Copy-Item”中的连字符处失败。我有一种感觉,我要么在其中一条路径中缺少“*”。或者有一个不应该的地方。我已经尝试过各种组合,但没有任何乐趣。
出于测试目的,我在桌面上有 3 个项目:1) 文件夹快捷方式,2) Powershell 脚本快捷方式,以及 3) GodMode 'folder'.
提前感谢您的帮助。以下是代码的一个子集:
$env:path += ";D:\PowershellScriptsFolder" # this is the location of my ps1
# (a bunch of code here, all of which runs fine) #
# Desktop
# Define Variables
$DestinationPath = "D:\folder1\subfolder\*"
$SourcePathRoot = 'C:\Users\Sfrn\Desktop\' # this is the location of my Win 10 desktop
#
Remove-Item -Recurse -Path $DestinationPath -Force
(*** 这是它失败的地方:***)
Copy-Item -Recurse -Path $SourcePathRoot -Destination $DestinationPath -Force # this is line 32
(*** 这是错误输出 - 字符 5 是“Copy-Item”中的连字符:***)
Copy-Item:路径中有非法字符。 在 D:\Dropbox\DB_AppData\PowerShell_and_Bat\CopyToBackup_2.ps1:32 char:5
-
Copy-Item -Recurse -Path $SourcePathRoot -Destination $Destinatio ...
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : InvalidArgument: (D:\Dropbox\DB_AppData\Desktop*:String) [复制项目], ArgumentException
- FullyQualifiedErrorId : CreateDirectoryArgumentError,Microsoft.PowerShell.Commands.CopyItemCommand
Copy-Item:路径中有非法字符。 在 D:\Dropbox\DB_AppData\PowerShell_and_Bat\CopyToBackup_2.ps1:32 char:5
-
Copy-Item -Recurse -Path $SourcePathRoot -Destination $Destinatio ...
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : InvalidArgument: (desktop.ini:FileInfo) [复制项目], ArgumentException
- FullyQualifiedErrorId : CopyDirectoryInfoItemArgumentError,Microsoft.PowerShell.Commands.CopyItemCommand
Copy-Item:路径中有非法字符。 在 D:\Dropbox\DB_AppData\PowerShell_and_Bat\CopyToBackup_2.ps1:32 char:5
-
Copy-Item -Recurse -Path $SourcePathRoot -Destination $Destinatio ...
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : InvalidArgument: (Dropbox.lnk:FileInfo) [复制项目], ArgumentException
- FullyQualifiedErrorId : CopyDirectoryInfoItemArgumentError,Microsoft.PowerShell.Commands.CopyItemCommand
Copy-Item:路径中有非法字符。 在 D:\Dropbox\DB_AppData\PowerShell_and_Bat\CopyToBackup_2.ps1:32 char:5
-
Copy-Item -Recurse -Path $SourcePathRoot -Destination $Destinatio ...
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : InvalidArgument: (OpenApps.lnk:FileInfo) [复制项目], ArgumentException
- FullyQualifiedErrorId : CopyDirectoryInfoItemArgumentError,Microsoft.PowerShell.Commands.CopyItemCommand
Copy-Item:路径中有非法字符。 在 D:\Dropbox\DB_AppData\PowerShell_and_Bat\CopyToBackup_2.ps1:32 char:5
-
Copy-Item -Recurse -Path $SourcePathRoot -Destination $Destinatio ...
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : InvalidArgument: (D:\Dropbox\DB_AppData\Desktop*:String) [复制项目], ArgumentException
- FullyQualifiedErrorId : CreateDirectoryArgumentError,Microsoft.PowerShell.Commands.CopyItemCommand
(*** 错误输出结束:***)
(一堆代码继续到这里运行,全部没问题)
结束
你的星号放错地方了。它需要在源目录路径中,而不是目标目录中,如下所示:
$SourcePathRoot = "C:\Users\Sfrn\Desktop\*"
$DestinationPath = "D:\folder1\subfolder\"