下面是一个小的 PowerShell 脚本,它异步运行一些 PowerShell 代码以显示一个对话框(用于演示我的问题)。
如果我关闭父 PowerShell 进程,子进程也将关闭并且对话框消失。有什么方法可以异步启动 PowerShell 脚本块,包括函数和参数,并且不依赖于父 PowerShell 进程?
$testjob = [PowerShell]::Create().AddScript({ $a = new-object -comobject wscript.shell
$b = $a.popup('This is a test',5,'Test Message Box',1) })
$result = $testJob.BeginInvoke()
更新#2
我正在尝试执行脚本块,而不是外部脚本。脚本块应使用父脚本中的函数和变量。问题是,除非它们直接包含在脚本块中,否则我无法将这些函数或变量传递给新进程。知道这是否可行吗?
Function Show-Prompt {
Param ($title,$message)
$a = new-object -comobject wscript.shell
$b = $a.popup($message,5,$title,1)
}
$scriptContent = {Show-Prompt -Message 'This is a test' -Title 'Test Message Box'}
$scriptBlock = [scriptblock]::Create($scriptContent)
Start-process powershell -argumentlist "-noexit -command &{$scriptBlock}"