我正在调试ISE中的powershell脚本,在那里我调用了sysinternals pskill实用程序。
出于某种原因,PowerShell会打开以下对话框:
为什么呢?如何配置它不显示对话框,只是按照我的意图运行脚本?
编辑1
问题很容易复制:
结果如下:
虽然没有对话框,但是有错误输出,我想这是我在其他场景中对话的原因。那么,问题是错误输出的原因是什么?
似乎pskill将其帮助屏幕的一部分发送给stderr,实际上,观察:
C:\Dayforce\utils> .\pskill.exe -h
PsKill v1.15 - Terminates processes on local or remote systems
Copyright (C) 1999-2012 Mark Russinovich
Sysinternals - www.sysinternals.com
Usage: pskill [-t] [\\computer [-u username [-p password]]] <process ID | name>
-t Kill the process and its descendants.
-u Specifies optional user name for login to
remote computer.
-p Specifies optional password for user name. If you omit this
you will be prompted to enter a hidden password.
C:\Dayforce\utils> .\pskill.exe -h 2> $null
Usage: pskill [-t] [\\computer [-u username [-p password]]] <process ID | name>
-t Kill the process and its descendants.
-u Specifies optional user name for login to
remote computer.
-p Specifies optional password for user name. If you omit this
you will be prompted to enter a hidden password.
C:\Dayforce\utils>
所以,我似乎只遇到了pskill的问题,因为它输出到stderr并且ISE认为它是打开对话框的一个很好的理由。我使用-nobanner命令行选项修复它。
但是如何解决这个问题呢?如果命令输出stderr,我不希望ISE打开任何对话框,这本身可能不是很好,但并不意味着有错误。
答案 0 :(得分:1)
为了在脚本/函数顶部使用Write-Debug
this 时禁止显示确认框:
If ($PSBoundParameters['Debug']) {
$DebugPreference = 'Continue'
}