默认情况下,任何具有[CmdletBinding()]属性的命名函数都接受-debug和-verbose(以及其他一些)参数,并具有预定义的$ debug和$ verbose变量.我想弄清楚的是如何将它们传递给在函数内调用的其他cmdlet.
假设我有一个像这样的cmdlet:
function DoStuff() {
[CmdletBinding()]
PROCESS {
new-item Test -type Directory
}
}
Run Code Online (Sandbox Code Playgroud)
if -debug或者-verbose传入我的函数我想将该标志传递给$debugcmdlet.这样做的正确模式是什么?
我正在编写一个 PowerShell Cmdlet 并使用WriteDebug,但我想编写一个需要额外 API 调用的对象,我宁愿在调试关闭时不进行该调用。如何检测是否设置了 Debug 标志,以便我可以完全跳过对 WriteDebug 的调用?
例如,我的 WriteDebug 调用将如下所示:
WriteDebug(string.Format("Name : {0}", api.GetName(myobj)));
Run Code Online (Sandbox Code Playgroud)
在那个例子中,我想避免调用api.GetName除非打开调试。