我有这个脚本
$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>]