Как добавить вывод -Verbose в файл журнала в PowerShell? - PullRequest
0 голосов
/ 15 мая 2018

У меня есть сценарий PowerShell, который копирует некоторые файлы из одной папки в другую, а также у меня есть код для создания файла журнала и добавления шагов, выполняемых сценарием, в файл журнала.

Ниже приведен код -

[CmdletBinding()]
Param (
    [string]$destRoot = "C:\Program Files\Demo",
    [string]$BackUpFolder = "C:\Program Files\Backup"  
)

$scriptPath = $PSScriptRoot
$logFilePath = Join-path $scriptPath "FileDeployment.log"

# If log file exists, then clear its contents 
if (Test-Path $logFilePath) { clear-content -Path $logFilePath } 

# It displays the date and time of execution of powershell script in log file.
$log = "Date Of Testing: {0} " -f (Get-Date)
$logString = "Process Started." 
add-content -Path $logFilePath -Value $log -Force 
add-content -Path $logFilePath -Value $logString -Force 
add-content -Path $logFilePath -Value "`n" -Force

# Code to take back of programs folder
$ProgramFilesBackUp = "$BackUpFolder\BackupPrograms"
$ProgramsFiles = "$destRoot\Programs\*"

Copy-Item $ProgramsFiles $ProgramFilesBackUp -Recurse -Force -Verbose 

-Verbose отображает все имена файлов вместе с путем, который копируется из папки «Программы» в папку BackupPrograms, но ему не удается добавить эти выходные данные в мои файлы журналов, которые отображаются в командной оболочке. Я пытался что-то вроде этого, но он перезаписывает предыдущий вывод, присутствующий в файле журнала.

Copy-Item $ProgramsFiles $ProgramFilesBackUp -Recurse -Force -Verbose  *> $logFilePath

Я также попробовал приведенный ниже код, скопировав вывод, сгенерированный verbose, в новый файл, а затем попытался добавить содержимое файла в мой файл журнала, здесь он скопировал содержимое, но не в правильном формате.

$NewText= "$PSScriptRoot\s.txt"
Copy-Item $ProgramsFiles $ProgramFilesBackUp -Recurse -Force -Verbose  *> $NewText
Get-Content $NewText | Out-File $logFilePath -Verbose -Append 

Ниже приведен формат, в котором он скопировал содержимое.

enter image description here

1 Ответ

0 голосов
/ 15 мая 2018

Вы должны прочитать и полностью понять Get-Help about_Redirection, который идентифицирует все различные выходные потоки и обсуждает, как их перенаправить.В этом случае, поскольку вы указали интерес к потоку -Verbose, вы хотите перенаправить поток # 4 к стандартному выводу, что делается путем добавления 4>&1 к команде, прежде чем фактически выполнить перенаправление > foolog.txt или>> foolog.txt.

ПРИМЕЧАНИЕ. Это может не работать для Powershell 2.0;это документировано для 3.0 и позже.

...