复制没有拿起正确的源文件夹

我有这个脚本

$folder = Get-ChildItem -Path \\exp-01\Uploads | Sort-Object LastWriteTime -Descending | Select-Object -Last 1 

文件夹variables正确设置,当我检查它,它出现

    目录:\\ exp-01 \ Uploads


模式LastWriteTime长度名称
 ---- ------------- ------ ----
 d ---- 29/05/2017 08:17 149604223125762

但是当我这样做

 copy $folder E:\InvoiceUploads\files\ -Recurse 

我得到一个错误,

复制:无法findpath'C:\ Users \ web.developer.03 \ 149604223125762',因为它不存在。

PowerShell正在运行该文件夹(提示符是):

 C:\ Users \用户web.developer.03>

所以,基本上它不是拾取正确的源代码,而是占用当前目录作为源。 我在这里做错了什么?

$folder包含一个DirectoryInfo对象,而不是一个路径。 默认情况下,PowerShell扩展了这些对象的Name属性,因此Copy-Item正在查找当前工作目录中的文件夹名称。

选择文件夹时展开FullName属性:

 $folder = Get-ChildItem -Path \\exp-01\Uploads | Sort-Object LastWriteTime -Descending | Select-Object -Last 1 -Expand FullName 

或者使用Copy-Item语句中的FullName属性:

 copy $folder.FullName E:\InvoiceUploads\files\ -Recurse 

好像你正在使用MS CMD语法。 (注意你正在使用Copy – not Copy-Item)

您是否尝试使用Powershells cmdlet进行复制,以及源和目标的命名参数? 也许它可以帮助你。

 SYNTAX Copy-Item [-Path] <String[]> [[-Destination] <String>] [-Container] [-Credential <PSCredential>] [-Exclude <String[ ]>] [-Filter <String>] [-Force] [-Include <String[]>] [-PassThru] [-Recurse] [-Confirm] [-WhatIf] [-UseTransaction [<SwitchParameter>]] [<CommonParameters>] Copy-Item [[-Destination] <String>] [-Container] [-Credential <PSCredential>] [-Exclude <String[]>] [-Filter <Strin g>] [-Force] [-Include <String[]>] [-PassThru] [-Recurse] -LiteralPath <String[]> [-Confirm] [-WhatIf] [-UseTransac tion [<SwitchParameter>]] [<CommonParameters>]