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

Powershell错误复制项无法将参数绑定到参数“path”,因为它为null,powershell,Powershell,我是Powershell的新手,对收到的错误有疑问。在浏览stack overflow之后,我发现用户在拼写等方面出现了错误,因此我还没有找到解决问题的合适答案 我有一个脚本,它运行一些数据的备份,并将其压缩并存储为: yyyyMMddsometext.7z 我有另一个脚本来获取创建的最新备份,并将其复制到其他位置 我收到一个错误 复制项无法将参数绑定到参数“path”,因为它为空 这是否意味着该文件不存在,或者它是以下任何一项中的错误 $c = $textBox.Text $a = (Get-

我是Powershell的新手,对收到的错误有疑问。在浏览stack overflow之后,我发现用户在拼写等方面出现了错误,因此我还没有找到解决问题的合适答案

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

yyyyMMddsometext.7z

我有另一个脚本来获取创建的最新备份,并将其复制到其他位置

我收到一个错误

复制项无法将参数绑定到参数“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

您必须确保变量中的值符合预期,您可以添加日志以进行调试

$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对象,您必须从该对象中选择文件的完整路径的全名属性。

$b可能包含多个文件,甚至可能不包含,具体取决于您的筛选器找到的文件

正确的原因是:

# 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确实包含您想要的内容。我不知道,因为我不知道您的文本框中有什么。

错误表明$b不包含任何值。这可能是因为您的筛选器找不到匹配的文件,或者是因为该文件不存在,或者筛选器错误。将$a写入控制台并确保文件名正确。@Paxz感谢您的澄清。如果文件所在的位置可能在周一到周日的任意数量的文件夹中,它是否仍会找到文件(如果存在)并复制它?或者我需要指定在每个文件夹中搜索吗?$c的值是多少?$c是格式为yyyyMMdd的用户输入日期,因为我查找的文件每天都备份,我们需要获取在指定日期前一天备份的文件。因此,会弹出一个GUI,表示以yyyyMMdd格式输入日期,并将其插入值$c中@marsze@jasony4那我想应该没问题。谢谢你!非常有用的工具。我发现该文件不存在,这就是我返回错误的原因。需要复制的文件可以位于标记为从星期日到星期一的任何一个文件夹中。我是否需要创建循环来搜索每个文件夹,或者如果我指定为BackupsRP1,它是否会搜索该目录中的所有文件夹?您可以使用-Recurse with-Include Monday、tuday、…、sunday for Get childItem尝试此操作将返回给您。谢谢你的帮助@jasony4还有一个可能的陷阱:文件是在文件夹的顶层还是任何子文件夹中?即使是我,有时也会忘记。