我编写了自己的Powershell日志记录函数Log,stream其中包含参数(写入消息的流)和message(要写入的消息).
我的想法是我可以将输出写入控制台和日志文件.我在函数中做的基本上是确定发布消息的流(使用switch语句),然后将消息写入流和日志文件:
switch ($stream) {
Verbose {
Write-Output "$logDate [VERBOSE] $message" | Out-File -FilePath $sgLogFileName -Append
Write-Verbose $message
break
}
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是,是否有可能检查是否给出了-Verbose参数?
目标是仅在给出-Verbose时将消息写入日志文件.
我已经查看了以下帮助文档,但没有找到任何帮助:
- help about_Parameters
- help about_commonparameters
此外,-WhatIf参数不适用于Write-Verbose.
非常感谢你的回答!
CB.*_*CB. 22
在你的脚本里面检查:
$PSCmdlet.MyInvocation.BoundParameters["Verbose"].IsPresent
Run Code Online (Sandbox Code Playgroud)
d3r*_*3kk 19
也可用:检查参数'$ VerbosePreference'.如果设置为'SilentlyContinue',则命令行不会给出$ Verbose.如果它设置为'$ Continue',那么您可以假设它已设置.
也适用于以下其他常见参数:
Name Value
---- -----
DebugPreference SilentlyContinue
VerbosePreference SilentlyContinue
ProgressPreference Continue
ErrorActionPreference Continue
WhatIfPreference 0
WarningPreference Continue
ConfirmPreference High
Run Code Online (Sandbox Code Playgroud)
摘自很久以前的MSDN博客页面...所以它应该与相对旧版本的Powershell相关.另请参阅Powershell v4中的"Get-Help about_CommonParameters".
更一般地说:由于可能在命令行上指定 -Verbose:$false,因此以下代码处理这种情况。它也适用于任何其他开关参数:
$Verbose = $false
if ($PSBoundParameters.ContainsKey('Verbose')) { # Command line specifies -Verbose[:$false]
$Verbose = $PsBoundParameters.Get_Item('Verbose')
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7500 次 |
| 最近记录: |