Powershell类中的信息流

时间:2018-01-16 19:49:00

标签: powershell class

我最近用PS类编写了一个脚本。要获取状态信息,请使用Write-Information。出于某种原因,使用InformationVariable无法捕获此消息。下面是一个测试脚本,用于演示会发生什么。

Class Test1
{
    Test1()
    {
        Write-Information "Entering Test1()"
    }
}

Class Test2
{
    Test2()
    {
        Write-Information "Entering Test2()"
    }
}

Function Start-Test
{
    [CmdLetBinding()]
    Param()
    Write-Information "Going to create objects"
    $objF1 = [Test1]::new()
    $objF2 = [Test2]::new()
    Write-Information "Leaving Start-Test"
}

Start-Test -InformationAction Continue -InformationVariable iv

现在执行脚本

PS C:> C:\ LocalData \类Information.ps1

要创建对象
输入Test1()
输入Test2()
离开开始测试

所有使用写信息生成的消息都显示在屏幕上,如上所示。

我希望在信息变量$ iv中也有相同的输出,因为使用-InformationVariable iv捕获流

PS C:> $ IV
要创建对象
离开开始测试

但令人惊讶的是,只有函数中生成的消息存储在变量$ iv中,类构造函数中生成的所有消息都丢失了???

如果我以这种方式启动相同的脚本,则可以在信息流中找到所有消息。

$ps =  [Powershell]::Create()
$null = $ps.AddCommand("C:\LocalData\Class-Information.ps1", $false)
$null = $ps.Invoke()
$ps.Streams.Information | ForEach-Object { ("{0} {1}" -f $_.Timegenerated,$_.MessageData) }
10.01.2018 09:27:55 Going to create objects
10.01.2018 09:27:55 Entering Test1()
10.01.2018 09:27:55 Entering Test2()
10.01.2018 09:27:55 Leaving Start-Test

如何使用-InformationVariable获取所有消息。

0 个答案:

没有答案