gpt4 book ai didi

debugging - Powershell 控制台中未经请求的调试信息

转载 作者:行者123 更新时间:2023-12-02 22:33:36 24 4
gpt4 key购买 nike

我遇到了一个令人讨厌的问题,我想消除在 Powershell 控制台和 ISE 中获取我不需要的调试信息的位置。这很麻烦,因为它妨碍了我想要的调试信息。

我不清楚这是否特定于我正在编写脚本的工具 (WinSCP),还是更通用的 PowerShell 行为。

简而言之,WinSCP.Session.Open 事件不会写出任何内容(很好!),但是 Close()Dispose( ) 方法非常繁琐,每次调用时都会在我的控制台中显示以下内容。

起初我认为这可能是在 finally block 中包含语句的结果,但将它们移动到 try block 会产生相同的令人讨厌的行为。

基于类似但不相同的问题,我检查了“偏好变量”。我的股票值(value)列在最后,我唯一尝试更改但无济于事的是将“警告偏好”更改为“默默继续”,这没有效果

运行示例:

PS F:\> getFirewallContents "AAA" 255.255.227.254
Attempting Session.Open AAA | 255.255.227.254
Completed Session.Open AAA | 255.255.227.254
/var/db/commits exists, last write: 5/8/2015 11:33:22 AM
Closing Session AAA

... two stanzas that follow are the undesired output ......

MemberType : Method
OverloadDefinitions : {System.Void Close()}
TypeNameOfValue : System.Management.Automation.PSMethod
Value : System.Void Close()
Name : Close
IsInstance : True

MemberType : Method
OverloadDefinitions : {System.Void Dispose()}
TypeNameOfValue : System.Management.Automation.PSMethod
Value : System.Void Dispose()
Name : Dispose
IsInstance : True

Closed Session AAA
<小时/>
function getFirewallContents ([string] $fw_name, [string] $fw_ip) {
$session = New-Object WinSCP.Session
$sessionOptions = New-Object WinSCP.SessionOptions
$xferOptions = New-Object WinSCP.TransferOptions

$sessionOptions.HostName = $fw_ip
$sessionOptions.UserName = "NOPE"
$sessionOptions.Password = "NOT TELLING"
$sessionOptions.Protocol = [WinSCP.Protocol]::Sftp
$sessionOptions.GiveUpSecurityAndAcceptAnySshHostKey = $TRUE

$remotefile = "/var/db/commits"

Try {
Write-Host "Attempting Session.Open " $fw_name " | " $sessionOptions.HostName

$session.Open($sessionOptions)

Write-Host "Completed Session.Open " $fw_name " | " $sessionOptions.HostName

if ($session.FileExists($remotefile)) {
Write-Host "$remotefile exists, last write:" $session.GetFileInfo($remotefile).LastWriteTime
} else {
Write-Host "$remotefile NOT FOUND"
}
} Catch {
Write-Host "Something bad happened"
} Finally {
Write-Host "Closing Session $fw_name "
$session.Close
$session.Dispose
Write-Host "Closed Session $fw_name "
}
}
<小时/>
Name                           Value
---- -----
ConfirmPreference High
DebugPreference SilentlyContinue
ErrorActionPreference Continue
ProgressPreference Continue
VerbosePreference SilentlyContinue
WarningPreference Continue (Tried Silently Continue, no effect)
WhatIfPreference False

最佳答案

在调用 .Close.Dispose 时缺少括号。因此,您实际上根本没有调用这些方法,而是获取这些方法的地址而不是使用它。作为最后的手段,PowerShell 在控制台上打印“表达式”结果。

正确的语法是:

$session.Close()
$session.Dispose()

关于debugging - Powershell 控制台中未经请求的调试信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30199265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com