[英]Running same powershell script multiple asynchronous times with separate runspace
[英]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
)中定义a1
和writelog
。
例如。 以下内容确实添加到文件中:
$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.