我正在尝试调用已定义的函数(使用声明的变量和对象)作为后台任务来改变powershell gui中的对象。
应该是这样的:
function CallFunction
{
#call function in background
Start-Job {alterLabel}
}
function alterLabel
{
$Label.text = "Label was altered"
}
是否有可能调用已经使用过的此功能。因此,我无法将其定义为变量,因为它会导致巨大的冗余。
答案 0 :(得分:0)
您可以使用runspacepool执行类似的操作:
$Runspace = [runspacefactory]::CreateRunspace()
$PowerShell = [powershell]::Create()
$PowerShell.runspace = $Runspace
$Runspace.Open()
[void]$PowerShell.AddScript({
function alterLabel
{
$Label.text = "Label was altered"
}
alterLabel
})
$AsyncObject = $PowerShell.BeginInvoke()
$AsyncObject
根据评论,请尝试这种方法。在start-job中有一个 InitializationScript 参数,您可以在之前编译该函数。
$init= function alterLabel
{
$Label.text = "Label was altered"
}
Start-Job -InitializationScript $init -ScriptBlock {alterLabel}
希望它有所帮助。