Powershell错误复制项目无法将参数绑定到参数“路径”,因为它为null

时间:2018-12-18 11:21:53

标签: powershell

我对Powershell相当陌生,对我收到的错误有疑问。浏览堆栈溢出后,我发现用户在拼写等方面出错,因此找不到适合我问题的答案。

我有一个脚本运行一些数据的备份并将其压缩并存储为:

  

yyyyMMdd sometext .7z

我还有另一个脚本来获取最新备份(如果已创建)并将其复制到另一个位置

我收到错误

  

copy-item无法将参数绑定到参数'path',因为它为空

这是否表示文件不存在或以下任何错误?

$c = $textBox.Text
$a = (Get-Date).AddDays(-1).ToString($c)                                                        
$b = Get-ChildItem "C:\BackupsRP1" -Filter *.7z | Where-Object BaseName -like "*$a*" 
Copy-Item $b -Destination "C:\Users\user\Desktop"

代码上方是一个简单的GUI,供用户以yyyyMMdd格式输入日期,它将比用户输入的日期少找到文件并将其复制到该位置。

谢谢你, J

2 个答案:

答案 0 :(得分:1)

# This will copy each of the files that Get-ChildItem "C:\BackupsRP1" -Filter *.7z | where BaseName -like "*$a*" | Copy-Item -Destination "C:\Users\user\Desktop" -PassThru 可能包含多个文件,甚至可能根本没有,这取决于您的过滤器找到的内容。

正确的原因:

$a

这将复制所有与过滤器匹配的项目,然后将复制的文件输出到控制台。

此外,请确保pow确实包含您想要的内容。 (我不知道,因为我不知道您的文本框中的内容。)

答案 1 :(得分:0)

您必须确保变量中的值与预期的一样,您可以添加日志记录以进行调试。

$c = $textBox.Text
$c > c:\temp\Debug.log
$a = (Get-Date).AddDays(-1).ToString($c)                                                        
$a >> c:\temp\Debug.log
$b = Get-ChildItem "C:\BackupsRP1" -Filter *.7z | Where-Object BaseName -like "*$a*" 
$b >> c:\temp\Debug.log
Copy-Item $b.FullName -Destination "C:\Users\user\Desktop"

$ b将包含FileInfo对象,您必须从该对象中选择fullname属性(文件的完整路径)。