我有一个PowerShell脚本,我已将$DebugPreference
设置为"Continue"
。但是,当我从脚本中调用的模块调用Write-Debug
时,$DebugPreference
更改为"SilentlyContinue"
。这是为什么?我如何保持$DebugPreference
与调用脚本相同?实施例下面
CallingScript.ps1
$DebugPreference = "Continue"
Write-Host "Debug preference: $DebugPreference"
Write-Debug "Checking that debugging works"
Import-Module Logging;
Write-Log "Debug" "Checking that debugging still works!"
Logging.psm1
Function Write-Log
{
param (
[ValidateSet("Error","Warning","Debug","Info")][String]$type,
[String]$logMessage
)
Write-Host "Debug preference: $DebugPreference"
switch($type)
{
"Error" {Write-Error $logMessage;}
"Warning" {Write-Warning $logMessage;}
"Debug" {Write-Debug $logMessage;}
"Info" {Write-Output $logMessage;}
}
}
如果我运行脚本,这是输出:
PS > .\CallingScript.ps1
Debug preference: Continue
DEBUG: Checking that debugging works
Debug preference: SilentlyContinue
PS >
这可以通过模块范围来解释。看看[这个答案](http://stackoverflow.com/a/17112513/608772)。我不想重复这个答案。如果它解释了你的问题,我会做。 – JPBlanc
@JBBlanc您可能需要解释它并显示一个可行的例子...对不起! –