Подробный параметр PowerShell

У меня есть несколько вопросов о подробном параметре. Пример скрипта:

try {
    New-Item -Path "C:\Test.txt" -ItemType "File" -ErrorAction Stop -Verbose
}
catch {
    Write-Host $Error[0]
}

Выход:

VERBOSE: Execute the "Create file" operation for the target "Target: C:\Test.txt".
Access to the path "C: \ Test.txt" was denied.

Как сохранить подробное сообщение в переменной?

Можно ли отредактировать подробное сообщение, автоматически сгенерированное PowerShell, перед его сохранением в файле журнала (добавить дату и время)? Пример скрипта (не работает):

try {
    New-Item -Path "C:\Test.txt" -ItemType "File" -ErrorAction Stop -Verbose *> $LogFile
}
catch {
    Write-Host $Error[0]
}

Есть ли лучшие предложения по написанию файла журнала «успех», чем с подробным параметром и без необходимости писать его вручную?

Благодарю вас!


person Alex    schedule 30.04.2020    source источник
comment
Последний вопрос немного неясен - не могли бы вы опубликовать пример того, что вы сейчас описываете/делаете?   -  person Mathias R. Jessen    schedule 30.04.2020
comment
Я добавил к вопросу.   -  person Alex    schedule 30.04.2020


Ответы (1)


Вы можете назначить подробный вывод переменной, если объедините поток Verbose со стандартным потоком вывода (4>&1):

$output = New-Item "C:\Test.txt" -ItemType "File" -ErrorAction Stop -Verbose 4>&1

Поскольку New-Item также возвращает только что созданный файл, вам нужно снова разделить вывод на подробный и обычный:

$verboseOutput,$normalOutput = $output.Where({$_ -is [System.Management.Automation.VerboseRecord]}, 'Split')

И теперь вы можете добавлять временные метки к записям в $verboseOutput, прежде чем записывать их на диск.

person Mathias R. Jessen    schedule 30.04.2020