You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何InlineScript中赋值Get-AutomationPSCredential后Verbose消息'3'不显示?

为什么Verbose消息'3'不显示?

这个问题我之前也碰到过,核心原因是**Get-AutomationPSCredential在PowerShell Workflow的inlinescript块中执行时,会悄悄修改当前会话的VerbosePreference设置**,哪怕你之前手动把它设成了Continue也没用。

具体原因

当你在inlinescript里调用Get-AutomationPSCredential时,这个Azure Automation专属的cmdlet内部会将VerbosePreference重置为默认的SilentlyContinue,所以在它之后执行的Write-Verbose -Message '3'就会被忽略,不会输出。而如果你不调用这个cmdlet,VerbosePreference保持Continue,消息自然就能正常显示。

两种可行的解决方案

方案1:保存并恢复VerbosePreference

在调用Get-AutomationPSCredential之前,先把当前的VerbosePreference存起来,调用完再恢复:

workflow a {
    $VerbosePreference = 'Continue'
    Write-Verbose -Message '0'
    $Credential1 = Get-AutomationPSCredential -Name CRE-AUTO-WindowsLocalAdmin
    Write-Verbose -Message '1'
    
    inlinescript {
        Write-Verbose -Message '2'
        # 先保存当前的VerbosePreference
        $originalVerbosePref = $VerbosePreference
        $Credential2 = Get-AutomationPSCredential -Name CRE-AUTO-WindowsLocalAdmin
        # 恢复原来的VerbosePreference
        $VerbosePreference = $originalVerbosePref
        Write-Verbose -Message '3' # 现在就能正常显示了
    }
}

方案2:在Workflow层面获取凭据,传递给InlineScript

更推荐这种方式,因为避免了在inlinescript里调用Automation cmdlet的潜在问题:

workflow a {
    $VerbosePreference = 'Continue'
    Write-Verbose -Message '0'
    # 在Workflow层面先获取凭据
    $Credential1 = Get-AutomationPSCredential -Name CRE-AUTO-WindowsLocalAdmin
    Write-Verbose -Message '1'
    
    inlinescript {
        # 通过$Using:前缀引用Workflow层面的变量
        $Credential2 = $Using:Credential1
        $VerbosePreference = 'Continue'
        Write-Verbose -Message '2'
        Write-Verbose -Message '3' # 正常显示无压力
    }
}

内容的提问来源于stack exchange,提问作者Felix Bodmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:29:00