Powershell 启动作业未完成robocopy任务

Powershell 启动作业未完成robocopy任务,powershell,robocopy,start-job,Powershell,Robocopy,Start Job,使用Start Job执行此脚本时,不存在任何问题。文件从源复制到目标,一次复制一个目录,但所需时间太长。因此,我试图通过Start Job实现并行执行 脚本执行时不会出错,单个作业显示为已完成,但文件不会复制到源。我怀疑这与传递给作业的$null变量有关 我已经试了几个小时让它工作,切换脚本,调整脚本块,标志等,但没有任何工作 Param( [string]$env = 'test', [string]$directory = 'F:\Backup_Job' ) # Set

使用
Start Job
执行此脚本时,不存在任何问题。文件从源复制到目标,一次复制一个目录,但所需时间太长。因此,我试图通过
Start Job
实现并行执行

脚本执行时不会出错,单个作业显示为已完成,但文件不会复制到源。我怀疑这与传递给作业的
$null
变量有关

我已经试了几个小时让它工作,切换脚本,调整脚本块,标志等,但没有任何工作

Param(
    [string]$env = 'test',
    [string]$directory = 'F:\Backup_Job'
)

# Set job variables
CD $directory
$servers = Import-Csv .\servers.csv
$query = Get-Content .\Get_Server.txt -Raw
$excludedFiles = Import-Csv .\excludedFiles.csv

$jobs = foreach ($server in $servers) {
    if ($server.env.Trim() -eq $env) {
        Write-Host "Starting copy job for $($server.servername)"
        Start-Job -Name "Copyjob $($server.servername)" -ScriptBlock {
            Param($server, $excludedFiles, $directory, $query)
            # Server and bak variables
            $sqlServer = $server.servername.Trim()
            $filepath = $server.baksource.Trim()

            # Job variables
            $bakserver = Invoke-Sqlcmd -Query $query -ServerInstance $sqlServer -Database 'master' -QueryTimeout 100
            $baksource = "\\$($bakserver.server)\$($filepath)"
            $bakdest = $server.bakdest.Trim()

            $continue = Test-Path -Path $baksource

            if ($continue) {
                robocopy $baksource $bakdest "*.bak" /XF $excludedFiles.filename /XO /NP /ETA /W:1 /B /XX /R:3
            }
        } -ArgumentList $server, $excludedFiles, $directory, $query
    }
}

仔细检查SQL查询结果和所有变量,以确保它们已填充。有些写入详细信息-详细信息可能会清除它。您的意思是使用
调用命令
在每台服务器上运行robocopy,而不是
启动作业
?我看不到在您的计算机上并行运行多个robocopy实例的好处。如果您怀疑问题是由空值参数引起的:请验证它,并让scriptblock退出,如果是这种情况,则返回一个错误。+1表示
调用命令
,如果使用
-inconnectedsession
参数运行会话,速度也会快得多,因为这样可以将会话保存到变量中,并使用
Get PSSession
检索结果(可能是
Receive PSSession
,今天早上仍处于休眠状态:P)。特别有用的是,如果您的环境中存在延迟,这将不会在快速断开连接后终止调用。