如何在powershell作业中调用类对象

问题描述 投票:0回答:1

我已经创建了测试 PowerShell 类。我的计划是运行并行后台作业来创建类对象并执行类中的方法

class Test {

    [String]$ComputerName
    
    
    [String]TestMrParameter() {

        if ($this.ComputerName -eq 'jhon'){throw "Bad thing happened"}
        
        return $this.ComputerName 

    }
}

$names = @('david', 'jhon', 'mark','tent')
$jobs = [System.Collections.ArrayList]@()

function TestMrParameter2 {
    param (
        [String]$name
    )
    [Test]$obj = [Test]::new()
    $obj.ComputerName = $name
    Write-Host $name + "TestMrParameter2 Function Reached!!!"
    $output=$obj.TestMrParameter()
    Write-Host "Output of the Test class is" + $output
}


foreach ($name in $names) {

    $out = Start-Job -ScriptBlock ${Function:TestMrParameter2} -ArgumentList $name
    $jobs.Add($out) | out-null

}

我完成了我的工作,但没有达到我的期望。因此,我检查了每个作业的详细信息以获取更多见解,并在每个作业上发现了此错误。它无法识别类以从中创建对象。

Unable to find type [Test].
    + CategoryInfo          : InvalidOperation: (Test:TypeName) [], RuntimeException
    + FullyQualifiedErrorId : TypeNotFound
    + PSComputerName        : localhost
 
The property 'ComputerName' cannot be found on this object. Verify that the property exists and can 
be set.
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : PropertyNotFound
    + PSComputerName        : localhost
powershell jobs
1个回答
0
投票

这个问题已经在这里得到解答:

如何开始我刚刚定义的函数的工作?

通过初始化脚本开关。或者,或者将您的类函数放在作业脚本本身中。

© www.soinside.com 2019 - 2024. All rights reserved.