2015-08-14 120 views
0

我正在尝试创建一个PowerShell脚本,它将一定年龄的XML文件移动到要归档的网络驱动器中。该脚本迄今:参数绑定

$qaprocessedpath = "Y:\SFTPSHARE\SFTPYMSQ\YS42C1Processed" 
$qabackup = “\\servername\S$\xmlbackup\qa" 

$max_age_qa = "-1" 
$curr_date = Get-Date 
$del_date_q = $curr_date.AddDays($max_age_qa) 

Get-ChildItem -include *.xml $qaprocessedpath | Where-Object {$_.LastWriteTime -lt $del_date_q } | Foreach-Object {Copy-Item -Path $_.FullName -Destination $qabackup} {Remove-Item $_.FullName} 

此代码将导致以下错误:

Copy-Item : Cannot bind argument to parameter 'Path' because it is null. 
At Y:\SFTPSHARE\SFTPYMSP\XMLBackup.ps1:52 char:132 
+ Get-ChildItem -include *.xml $qaprocessedpath | Where-Object { $_.LastWriteTime -lt $del_date_q } | Foreach-Object {Copy-Item -Path <<<< $_.FullName -Destination $qabackup} {Remove-Item $_.FullName} 
    + CategoryInfo   : InvalidData: (:) [Copy-Item], ParameterBindingValidationException 
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.CopyItemCommand 

不知道在哪里的问题。我是一个新手编剧,所以我敢肯定,这东西很明显...

回答

0

在这一行

Get-ChildItem -include *.xml $qaprocessedpath | Where-Object {$_.LastWriteTime -lt $del_date_q } | Foreach-Object {Copy-Item -Path $_.FullName -Destination $qabackup} {Remove-Item $_.FullName} 

为什么你有以下的Foreach-Object 2个scriptblocks?

尝试用分号(在同一个脚本块中)将copy-itemremove-item分开,如果您希望它们都运行。正如你写的,这两个脚本块绑定到参数-Process(如往常)和-Begin参数。

+0

迈克,谢谢你。我组合了这两个脚本块,并用分号分隔每行。这清除了错误,脚本似乎执行,但是当我检查源目录和目标目录时,我发现没有文件实际移动。这次脚本没有错误,它只是没有实际移动任何东西。 – user3361305