- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望我的模块中的所有函数都默认为 $ErrorActionPreference = 'Stop'
.是否可以不修改所有功能?
我每个函数都有一个文件。
最佳答案
假设你的模块是一个脚本模块,即用PowerShell代码实现:
重要的 :
$ErrorActionPreference
值永远不会对脚本模块函数 生效(除非您直接从全局范围运行,模块也可以看到) - 但它确实如此所以对于编译的 cmdlet。 this GitHub issue 中讨论了这种非常有问题的行为。 $ErrorActionPreference
从调用方控制脚本模块的错误行为,但通过在您的模块中设置(覆盖) $ErrorActionPreference
您正在永久关闭那扇门。 -ErrorAction
公共(public)参数而不是 $ErrorActionPreference
首选项变量仍将覆盖模块全局 $ErrorActionPreference
值,因为在幕后,PowerShell 将 -ErrorAction
参数转换为具有该值的函数局部 $ErrorActionPreference
变量。 -ErrorAction
和 $ErrorActionPreference
机制受到不一致和模糊行为的困扰 - this GitHub docs issue 提供了 PowerShell 错误处理的全面概述。 I want all of the functions in my module to default to
$ErrorActionPreference = 'Stop'
. Is it possible without modifying all the functions?
$ErrorActionPreference = 'Stop'
放在您的
RootModule
*.psm1
文件的顶级代码中。 (模块 list 文件 (
RootModule
) 的
*.psd1
条目指定模块的主模块 - 请参阅
the docs )。
RootModule
文件的 .psm1
条目,只需在您的模块文件夹中创建一个 .psm1
文件(通常以封闭模块命名),内容为 $ErrorActionPreference = 'Stop'
,并从 RootModule
条目中引用它 - 有关背景信息,请参阅 this answer . -ErrorAction
参数覆盖(假设它们是高级函数),否则模块的顶级
$ErrorActionPreference
值将对模块的所有函数有效,除非您的函数直接发出语句-终止错误[1],在这种情况下,调用者的
$ErrorActionPreference
值很重要。
$ErrorActionPreference
很重要,它可以在每次调用的基础上使用公共(public)参数
-ErrorAction
覆盖,但仅适用于非终止错误。
$ErrorActionPreference
值影响,即使使用了
-ErrorAction
。 (请注意,二进制 cmdlet 不会发出脚本终止错误)。
ThrowTerminatingError()
方法报告此类错误(或只是抛出异常)。 $PSCmdlet.ThrowTerminatingError()
,然而,这在实践中很少见;通常使用的 Throw
语句会创建一个脚本终止错误,默认情况下它也会终止整个线程,即也终止调用者及其所有调用者。 1 / 0
或 'a,b' -split ',', 'NotAnInt'
。 [int]::Parse('NotAnInt')
$ErrorActionPreference
包含 'Continue'
,可能只是在本地范围内)从调用者的角度来看,表达式/其他命令的终止错误实际上变成了非终止错误。 $ErrorActionPreference
设置为 'Stop'
时,最初的语句终止错误被提升为脚本终止错误。 关于powershell - 是否可以将 $ErrorActionPreference = 'Stop' 配置为 powershell 模块中所有功能的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55839607/
今天我第一次尝试使用 PowerShell (v3.0),并对它的一些错误处理概念的奇怪实现方式感到非常沮丧。 我编写了以下代码(使用远程注册表 PowerShell 模块) try { Ne
两者, $ErrorActionPreference 变量和 -ErrorAction cmdlet 参数应该定义 non-terminating errors 的行为. 由于变量是全局的并且参数特定
考虑以下脚本 #requires -version 2.0 [CmdletBinding()] param ( ) $script:ErrorActionPreference = "Stop" Set
我们将 PowerShell 用于一些自动化构建脚本。不幸的是,默认情况下,PowerShell 在出错后继续。 通常,我可以通过设置 $ErrorActionPreference = Stop 来改
我需要处理Powershell脚本中的非终止错误。最有效的方法是什么? 将$ErrorActionPreference变量设置为停止并使用try/catch $ErrorActionPreferenc
我希望我的模块中的所有函数都默认为 $ErrorActionPreference = 'Stop' .是否可以不修改所有功能? 我每个函数都有一个文件。 最佳答案 假设你的模块是一个脚本模块,即用Po
我有一些 powershell 脚本,其中包含以下内容: $ErrorActionPreference = "stop" trap { Write-Error $_.Exception; } 使用 p
默认情况下,环境的 $ErrorActionPreference 设置为“继续”。当 cmdlet 抛出错误时,脚本将继续。 我希望它“停止”并陷入我的 try-catch block 的捕获中。在我
问题:powershell 脚本由于使用 $ErrorActionPreference 时应由 try 块捕获的异常而停止 例子: $ErrorActionPreference = 'Stop' tr
将 -Verbose 添加到 Copy-Item 命令似乎会使该命令忽略 $ErrorActionPreference 的值。这是一个错误还是我不明白的东西? 我认为这个脚本应该在它显示“为什么这样显
我的情况: $ErrorActionPreference = "Stop"; "1 - $ErrorActionPreference;" Get-ChildItem NoSuchFile.txt -E
我已经在我的 windows 10 机器上安装了 Docker for Windows。当我尝试从“windows 容器”“切换到 linux 容器”时,出现错误。 Unable to start:
我是一名优秀的程序员,十分优秀!