PowerShell Verbose-Parameter - PullRequest
       44

PowerShell Verbose-Parameter

0 голосов
/ 30 апреля 2020

У меня есть несколько вопросов о verbose-параметре. Пример сценария:

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]
}

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

Спасибо!

1 Ответ

0 голосов
/ 30 апреля 2020

Вы можете присвоить подробный вывод переменной, если объедините поток 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 перед записью их на диск

...