Get-ChildItem-获取当前目录的路径

时间:2018-08-29 14:43:10

标签: powershell

我有一个简单的任务,即从一个路径获取文件,然后使用PowerShell脚本将其复制到另一个路径。现在,我知道使用Get-ChildItem,如果未指定-Path,它将获得当前目录。我正在使用此代码,设置文件所在的目录,但仍在获取当前目录:

$file = Get-ChildItem -Path "\\w102xnk172\c$\inetpub\wwwroot\PC_REPORTS\exemplo\DCT\Files\STC" | Sort-Object LastWriteTime | Select-Object -Last 1
Copy-Item $file -Destination "\\Brhnx3kfs01.vcp.amer.dell.com\brh_shipping$\DEMAND_MONITOR\"
cmd /c pause | out-null

暂停时返回此错误:

enter image description here

这是脚本,遵循Get-ChildItemCopy-Item的文档中的规则。我想念什么吗?为什么仍然获取当前目录?我尝试了多种语法差异,使路径脱离逗号,而不是设置-Path或-Destination,直接在Copy-Item中设置文件,而不使用$file变量...

1 个答案:

答案 0 :(得分:2)

Copy-Item期望将[string]作为第一个位置参数-因此它将尝试将$file转换为字符串,这将导致文件的 name

引用文件的FullName属性值(完整路径):

Copy-Item $file.FullName -Destination "\\Brhnx3kfs01.vcp.amer.dell.com\brh_shipping$\DEMAND_MONITOR\"

或将$file对象传送到Copy-Item,然后让管道绑定为您完成其神奇的工作:

$file |Copy-Item -Destination "\\Brhnx3kfs01.vcp.amer.dell.com\brh_shipping$\DEMAND_MONITOR\"

如果您想亲自了解Powershell在内部如何处理此问题,请使用Trace-Command

Trace-Command -Name ParameterBinding -Expression {Copy-Item $file -Destination "\\Brhnx3kfs01.vcp.amer.dell.com\brh_shipping$\DEMAND_MONITOR\"} -PSHost