PowerShell从Jobs获取日志

加尔本

我正在使用称为Logging的PowerShell模块我使用其他Jobs做一些工作,但是不幸的是,我在其中写入的日志没有被Receive-Job命令接收。

function Get-Topic {
    [CmdletBinding(DefaultParameterSetName = "Normal")]
    [OutputType(ParameterSetName = "Normal")]
    [OutputType(ParameterSetName = "AsJob")]
    param (
        [Parameter(Mandatory = $true, ParameterSetName = "Normal")]
        [Parameter(Mandatory = $true, ParameterSetName = "AsJob")]
        [string]
        $ResourceGroupName,

        [Parameter(Mandatory = $true, ParameterSetName = "Normal")]
        [Parameter(Mandatory = $true, ParameterSetName = "AsJob")]
        [string]
        $Namespace,

        [Parameter(Mandatory = $true, ParameterSetName = "Normal")]
        [Parameter(Mandatory = $true, ParameterSetName = "AsJob")]
        [string]
        $Topic,

        [Parameter(Mandatory = $true, ParameterSetName = "AsJob")]
        [switch]
        $AsJob
    )

    if ($AsJob) {
        $PSBoundParameters.Remove('AsJob') | Out-Null
        return Start-ThreadJob -ScriptBlock {
            param(
                [string]$myFunction,
                [System.Collections.IDictionary]$argTable,
                [System.Collections.Concurrent.ConcurrentDictionary[string, hashtable]] $loggingTargets
            )

            $loggingTargets.Keys | ForEach-Object { Add-LoggingTarget -Name $_ -Configuration $loggingTargets[$_] }
            $cmd = [scriptblock]::Create($myFunction)

            & $cmd @argTable
        } -ArgumentList $MyInvocation.MyCommand.Definition, $PSBoundParameters, (Get-LoggingTarget)
    }

    $topicObj = Get-AzServiceBusTopic `
        -ResourceGroupName $ResourceGroupName `
        -Namespace $Namespace `
        -Name $Topic
    Write-Log -Message "Received topic $($topicObj.Name)" -Level INFO
    return $topicObj
}

有什么办法可以将输出重定向到父级Powershell会话?我看到Write-Host可以工作,但是带有Console目标的记录器却不能。任何解决方法?

加尔本

解决方案如下:

return Start-ThreadJob -StreamingHost (Get-Host) -ScriptBlock {
            param(
                [string]$myFunction,
                [System.Collections.IDictionary]$argTable,
                [System.Collections.Concurrent.ConcurrentDictionary[string, hashtable]] $loggingTargets
            )

            $loggingTargets.Keys | ForEach-Object { Add-LoggingTarget -Name $_ -Configuration $loggingTargets[$_] }
            $cmd = [scriptblock]::Create($myFunction)

            & $cmd @argTable
        } -ArgumentList $MyInvocation.MyCommand.Definition, $PSBoundParameters, (Get-LoggingTarget)

感谢上帝,cmdlet Start-ThreadJob允许这种功能,基本上参数-StreamingHost解决了这笔交易

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

禁用Spring日志以获取可读日志

来自分类Dev

PowerShell安全日志

来自分类Dev

在日志文件中获取包含字符串的行(Powershell)

来自分类Dev

如何在vNext发行模板的部署日志中获取powershell脚本输出?

来自分类Dev

如何获取特定列的日志?

来自分类Dev

Powershell日志尾部问题

来自分类Dev

在WebdriverIO中获取Chrome日志

来自分类Dev

在python中获取日志级别

来自分类Dev

从API获取日志但未呈现

来自分类Dev

如何从kubernetes获取部署日志

来自分类Dev

Powershell:需要获取事件查看器日志

来自分类Dev

循环获取Kubernetes Pod的日志

来自分类Dev

如何从JAVA文件获取日志

来自分类Dev

使用Powershell写入日志文件

来自分类Dev

使用Powershell创建日志文件

来自分类Dev

在Python中获取日志记录

来自分类Dev

从Powershell生成错误日志

来自分类Dev

获取Windows日志

来自分类Dev

使用PowerShell通过网络获取事件日志

来自分类Dev

获取(更详细的)Elastic Beanstalk部署日志-.NET / CLI / PowerShell

来自分类Dev

如何获取Powershell以读取SQL Server错误日志

来自分类Dev

在Powershell中创建日志文件

来自分类Dev

在Powershell中创建日志文件

来自分类Dev

通过powershell获取压缩的TFS 2015(vNext)构建输出日志(就像构建后的下载链接一样)

来自分类Dev

Powershell 写入事件日志换行

来自分类Dev

Powershell中的Git日志问题

来自分类Dev

系统日志的 PowerShell 脚本问题

来自分类Dev

获取 Kubernetes FlexVolume 日志

来自分类Dev

从 LoggerFactory 获取日志