我有一个脚本块,我想作为后台作业运行。以下是我要运行的命令:
Get-ChildItem -Recurse $source | Get-DfsrFileHash | Export-csv -Append C:\Temp\Test_Source_Checksum.csv
如果我运行此命令,它将成功通过,没有任何问题。
我为“开始工作”尝试了以下方法
Start-Job -ScriptBlock { Get-ChildItem -Recurse $source | Get-DfsrFileHash | Export-csv -Append C:\Temp\Test_Source_Checksum.csv }
这会导致“Get-Job”显示为已完成,但实际上它没有,或者似乎没有根据丢失的文件判断:“Test_Source_Checksum.csv”
我还尝试将以下内容用于“调用命令”
Invoke-Command -AsJob -ComputerName ($env:COMPUTERNAME) -ScriptBlock { Get-ChildItem -Recurse $source | Get-DfsrFileHash | Export-csv -Append C:\Temp\Test_Source_Checksum.csv }
这会导致“Get-Job”显示失败。
如果我使用以下方法显示失败:
(get-job -name Job38).JobStateInfo.Reason
我什么都没有回...
我在这里错误地使用了 Start-Job/Invoke-Command 吗?
我想将此作为后台作业运行的原因是,我试图复制大量数据并将其校验和(用于 DFS 迁移)。我想将数据复制到较小的子集中,然后对已复制的数据进行校验和,同时将其复制下一批...冲洗并重复
谢谢,
克里斯
编辑:这是整个脚本的副本:
##----------------------------------------------------------------------------------##
$source="E:\DFSR_Migration_Test_Prod"
$dest="F:\DFSR_Migration_Test_Prod"
$what = @("/COPYALL","/B","/SEC","/E","/xd","dfsrprivate")
$options = @("/R:6","/tee","/MT:32")
$cmdArgs = @("$source","$dest",$what,$options)
##----------------------------------------------------------------------------------##
robocopy @cmdArgs
Write-Output "Prod_Copied @" (get-date) | Out-File C:\Temp\File_Copy.txt -Encoding ascii -Append -NoClobber
Write-Output "Initiating Prod Source Checksum @" (get-date) | Out-File C:\Temp\File_Copy.txt -Encoding ascii -Append -NoClobber
Start-Job -ScriptBlock { Get-ChildItem -Recurse $source | Get-DfsrFileHash | Export-csv C:\Temp\Prod_Source_Checksum.csv }
Write-Output "Initiating Prod Destination Checksum @" (get-date) | Out-File C:\Temp\File_Copy.txt -Encoding ascii -Append -NoClobber
Start-Job -ScriptBlock { Get-ChildItem -Recurse $dest | Get-DfsrFileHash | Export-csv C:\Temp\Prod_Destination_Checksum.csv }