Изнутри функции, как просмотреть результат, который на данный момент будет возвращен в конвейер

Недавно мне пришлось добавить промежуточную переменную в скрипт PowerShell, иначе New-Item будет частью результата функции:

      # Put in local varible, otherwise we will return it as part of the function result
      $Local:logDirectory = New-Item -ItemType directory -Path $Local:logDir
      Write-Host "Created directory '$Local:logDir'"
  }
  return "$Local:logDir\$LogFileName"

Во время отладки мне бы хотелось иметь возможность делать дамп (Write-Host или что-то в этом роде) текущие биты, которые функция уже поставила в очередь до конца в конвейере после возврата из функции.

So:

Из функции PowerShell, как просмотреть результат, который на данный момент будет возвращен в конвейер


person Jeroen Wiert Pluimers    schedule 31.07.2014    source источник
comment
Я не думаю, что то, о чем вы просите (представление элементов, уже выведенных в конвейер в функции), доступно.   -  person Mike Shepard    schedule 31.07.2014


Ответы (1)


Используйте PowerGUI (среда IDE powershell), вы сможете вставлять точки останова и проверять переменные времени выполнения.

http://en.community.dell.com/techcenter/powergui/m/

Вы также можете использовать трубопровод для Out-Null, т.е.:

New-Item -ItemType directory -Path $Local:logDir | Out-Null

чтобы избавиться от ложного вывода. К сожалению, вам, возможно, придется просмотреть свой код построчно.

person Raf    schedule 31.07.2014
comment
Я пытался, но PowerGUI не показывает то, что функция уже отправила в конвейер. А $_ пока нет, так как это не цикл. - person Jeroen Wiert Pluimers; 31.07.2014
comment
NB. Вы можете использовать New-Item -ItemType directory -Path $Local:logDir | Out-Null, чтобы избавиться от ложного вывода. YИспользуйте это, чтобы исключить все, что может потенциально испортить ваши возвращаемые значения. - person Raf; 31.07.2014
comment
Спасибо. Это хорошая альтернатива локальной переменной. Но все же, как я могу определить, какое утверждение вызвало добавление? (Я бы предпочел не заканчивать много строк символом `| Out-Null`) - person Jeroen Wiert Pluimers; 31.07.2014
comment
К сожалению, вам, возможно, придется пройти их один за другим. - person Raf; 01.08.2014
comment
Пожалуйста, добавьте этот последний бит к ответу, и я приму его. - person Jeroen Wiert Pluimers; 02.08.2014