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

时间:2013-10-05 00:57:11

标签: powershell powershell-v2.0 copy-item

这个让我难过。我已经搜索过“copy-item无法将参数绑定到参数'path',因为它为null”,并找到了几个帖子,其中的答案涉及修复语法,以便第一个参数不为null。据我所知,我的第一个参数不是null,也是正确的类型,我仍然得到相同的错误。我也有一个非常相似的脚本在另一台服务器上运行没有问题,这是我从中开发的模板。

该脚本位于名为“weekly-archive.ps1”的文件中,并在PowerShell控制台中通过“。\ weekly-archive.ps1”调用。

我在Windows Server 2008 R2上运行PowerShell 2.0

这是有问题的脚本段,在使用前有完整的打印变量的东西:

$pathtosource = "\\domainname\backup\servers\windowsimagebackup\"
$pathtodest = "G:\backup\servers\"
$images = Get-ChildItem $pathtodest
foreach ($_ in $images)
{
    $sourcepathname = $pathtosource + $_
    $destpathname = $pathtodest + $_
    $logresult += "`tSaving '" + $sourcepathname + "' to '" + $destpathname + "' at " + (Get-Date).ToShortTimeString() + ".`n"
    $sourcepathname
    $sourcepathname.GetType()
    $pathtodest
    $pathtodest.GetType()
    Copy-Item $sourchpathname $pathtodest -recurse
    $count += 1
}

这是$ images中第一个$ _的结果输出,显示两个参数都不为null,两个参数实际上都是字符串:

PS D:\Administration> .\weekly-archive.ps1
\\domainname\backup\servers\windowsimagebackup\DC-1

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object
G:\backup\servers\
True     True     String                                   System.Object
Copy-Item : Cannot bind argument to parameter 'Path' because it is null.
At D:\Administration\weekly-archive.ps1:80 char:12
+         Copy-Item <<<<  $sourchpathname $pathtodest -recurse
    + CategoryInfo          : InvalidData: (:) [Copy-Item], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.CopyItemCommand

我也尝试使用'-path'和'-destination'标志,因为AFAIK是可选的。如果我使用文字字符串替换脚本中的copy-item行中的'$ sourcepathname',则没有错误。

最后,直接在PowerShell控制台中输入的以下行完美地运行:

$sourcepathname = "\\domainname\backup\servers\windowsimagebackup\DC-1"
$pathtodest = "G:\backup\servers\"
copy-item $sourcepathname $pathtodest -recurse

所以,使用'$ sourcepathname'显然有问题,但我找不到它。请不要犹豫,表明我的无知......

1 个答案:

答案 0 :(得分:2)

脚本的copy-item行有拼写错误。您有$sourchpathname,它应该是$sourcepathname