我的 Copy-Item PowerShell 命令生成一个错误,我找不到任何参考。
使用 PowerShell 4.x,我尝试将文件从本地驱动器复制到远程服务器(同一网络/域)。远程路径存在且为空。
Copy-Item
据我所知,该脚本中的以下命令会在复制每个文件时生成以下错误:
$SessionTarget = New-PSSession -ComputerName "MYSERVER1"
Copy-Item -Path "C:\Websites\XXX\*" -Destination "C:\Websites\XXX\" -ToSession $SessionTarget -Recurse
错误:
Copy-Item : Exception setting "Attributes": "Cannot convert value "1179648" to type "System.IO.FileAttributes" due to enumeration values that are not valid. Specify one of the following enumeration values and try again. The possible enumeration values are "ReadOnly, Hidden, System, Directory, Archive, Device, Normal, Temporary, SparseFile, ReparsePoint, Compressed, Offline, NotContentIndexed, Encrypted, IntegrityStream, NoScrubData"."
At C:\Websites\XXX_Deployment\Deploy.ps1:6 char:1
+ Copy-Item -Path "C:\Websites\XXX\*" -Destination "C:\Websites\XXX ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Copy-Item], SetValueInvocationException
+ FullyQualifiedErrorId : ExceptionWhenSetting
好消息是文件似乎已被复制。
对于这个错误您有什么想法吗?
谢谢你!
答案1
正如下面的 Keith Miller 所指出的(谢谢!),这些值与“新”文件属性相关。
我找到了一个出现错误的文件,检查了它的当前属性,发现它具有“(U)”属性:
'属性 .\MyFile.txt'
(U)0x100000 取消固定(OneDrive“仅在线文件”)
然后我删除了此属性并且能够Copy-Item
无错误地使用该命令:
属性 .\MyFile.txt -U
这篇文章很好地列出了所有属性及其位值:
答案2
1179648 = 0x00120000
这些对应于“较新”的属性:
Unpinned = 0x00100000
NoScrubData = 0x00020000