2015-05-12 6 views
2

У меня возникла неприятная проблема. Я хотел бы исключить, где я получаю информацию об отладке, которую я не прошу в консоли Powershell и ISE. Это неприятность в том, что это мешает моей желаемой информации об отладке.Неразрешенная отладочная информация Информация в консоли Powershell

Я не знаю, относится ли это к инструменту, который я использую для скриптинга (WinSCP), или к более типичному поведению PowerShell.

В общем, WinSCP.Session.Open события не выписывают что-нибудь (хорошо!), Но Close() и Dispose() методы весьма разговорчив, с ниже появляться в моей консоли на каждом вызове.

Сначала я думал, что это может быть следствием включения операторов в блок finally, но перемещение их в блок try приводит к такому же неудобству.

Основываясь на подобной, но не идентичной проблеме, я проверил «переменные предпочтений». Мои акции значения перечислены в самом конце, только один я пытался изменить без толку было «Предупреждение Preference» на «Молча ПРОДОЛЖИТЬ», который не имел никакого эффекта

Run-Пример:

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 
+2

Отправить вывод в битовом ведро. '$ session.Close | Out-Null' и т. Д. –

ответ

2

Вы отсутствуют скобки в вызове .Close и .Dispose. Таким образом, вы на самом деле не вызывают методы вообще, а скорее берут адрес методов и не используете его. PowerShell печатает результаты «выражения» на консоли в крайнем случае.

Правильный синтаксис:

$session.Close() 
$session.Dispose() 
+0

Это был большой учебный момент для меня, спасибо, спасибо вам !!!! Конечно, именно поэтому у меня было несколько сотен процессов, появляющихся в Process Monitor. (В то время не заметил). Это странный ответ, так как он представляет информацию, потому что на самом деле он не дает понять, что, по вашему мнению, не произошло, - неясно, что его «ПРЕДУПРЕЖДЕНИЕ» или «ОШИБКА», а не просто «INFO» или «DEBUG», Информация. Опять же, это будет большой момент обучения. Рад, что другой плакат удалил его ответ, хотя это была полезная информация, даже если это было не совсем правильно. –

+0

Эй! Я просто понял, почему твое имя показалось знакомым! Двойное спасибо! –

Смежные вопросы