這一個讓我難住。我已經搜索過「copy-item無法將參數綁定到參數'路徑',因爲它是空的」,並且發現了幾個帖子,其中的答案涉及修復語法以使第一個參數不爲空。據我所知,我的第一個參數不是null,也是正確的類型,我仍然得到相同的錯誤。我也有一個非常類似的腳本運行在另一臺服務器上,沒有問題,這是我開發的模板。複製品無法綁定參數參數'路徑',因爲它是空的
該腳本位於名爲'weekly-archive.ps1'的文件中,並且正由PowerShell控制檯中的'。\ weekly-archive.ps1'調用。
我是在Windows Server上運行的PowerShell 2.0 2008 R2
這裏是有問題的腳本段,完成額外的東西在使用之前打印的變量:
$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
}
這裏是輸出結果首$ _ $中的圖像,顯示出參數都不爲空,兩個參數實際上是字符串:
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是可選的。如果我用腳本字符串替換腳本中複製項目行中的'$ sourcepathname',則不會出現錯誤。
最後,下面的線直接鍵入PowerShell控制檯完美地工作:
$sourcepathname = "\\domainname\backup\servers\windowsimagebackup\DC-1"
$pathtodest = "G:\backup\servers\"
copy-item $sourcepathname $pathtodest -recurse
因此,一些顯然是錯誤的與我所用「$ sourcepathname」的,但我不能找到它。請不要猶豫,以證明我的無知....
Arghh。我知道我檢查過幾次拼寫。不好意思打擾大家這麼明顯的錯誤。 (關閉......) –
您可以啓用嚴格模式來查找和避免這些問題。請參閱http://technet.microsoft.com/en-us/library/hh849692.aspx –
感謝@Lars指出嚴格模式。試了一下,看起來它會有所幫助。 –