繁体   English   中英

异步Powershell脚本

[英]Asynchronous Powershell Script

我正在尝试在后台运行一个函数。 此功能需要始终等待一段时间。 我试图用start-job解决问题。 但是没有成功(日志为空)。

我的功能

Start-Job { a1 }
function a1()
{
  $timer = [diagnostics.stopwatch]::startnew()
  while ($timer.elapsed.totalseconds -lt 30) 
  {
    writelog "TESTTESTTEST" $timer.elapsed.totalseconds
    start-sleep -seconds 5
  }
  $timer.stop()
}

日志

function writelog([string]$func, [string] $Message, [string] $Value)
{
  $loggingpath = $LogPath+(Get-Date -displayhint date -Format yyyyMMdd)+".txt"
  Add-Content -Path $loggingpath -Value (" ")
  Add-Content -Path $loggingpath -Value ("Date:" + (Get-Date))
  Add-Content -Path $loggingpath -Value ("Function:" + ($func))
}

如果我在没有start-job运行代码,那么一切正常!

Start-Job在单独的工作进程中运行传递的脚本块。 在这种情况下,该过程没有a1的定义。 您需要在引用的脚本(文件)中或在脚本块中内联(以及其他任何依赖项,例如$LogPath )中定义a1writelog

例如。 以下内容确实添加到文件中:

$j = start-job { Add-Content -Path "$env:TEMP\JobDemo.txt" -value "A message at $([datetime]::Now)" }
$j | wait-job
$j | Receive-Job
Get-Content -Path "$env:TEMP\JobDemo.txt"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM