$ScriptBlock=”Copy-Item $remotefile $localfile -force”;
$Timeout = 4;
echo “动作块为: $ScriptBlock”
echo “开始启动job: ”
Get-Date -Format ‘yyyy-mm-dd HH:mm:ss’
$job = Start-Job -ScriptBlock {
param($num)
$numBlock = [Scriptblock]::Create($num)
$numBlock.Invoke()} -ArgumentList $ScriptBlock
$job | Wait-Job -Timeout $Timeout
if($job.State -ne ‘Completed’)
{
echo “[$nowtime]$mdname $hostip 取文件超时timeout”
$job | Stop-Job | Remove-Job
echo “回收job完成: ”
Get-Date -Format ‘yyyy-mm-dd HH:mm:ss’
测试结果如下:
Copy-Item \\192.168.2.109\D$\pnp4nagios修改配置文件.txt D:\nagios_collect_log\log\192.168.2.109.pnp4nagios修改配置文件.txt -force
动作块为: Copy-Item \\192.168.2.109\D$\pnp4nagios修改配置文件.txt D:\nagios_collect_log\log\192.168.2.109.pnp4nagios修改配置文件.txt -force
开始启动job: 2017-07-22 10:07:06
[2017-05-22 10:05:59]常州 192.168.2.109 取文件超时timeout
回收job完成: 2017-07-22 10:07:28
—现发现超时后,“$job | Stop-Job | Remove-Job”这一段代码运行需要20-30秒,有没有办法更快的回收这个$job呢;