Ведение журнала PowerShell и bat-файлов

Я написал простой скрипт в PowerShell:

############### script #############################
$Database = @("DatabaseNo1","DatabaseNo2","DatabaseNo3")

Write-Host Running on $Database[0]
#sqlcmd ...........
Write-Host Running on $Database[1]
#sqlcmd ...........
Write-Host Running on $Database[2]
#sqlcmd ...........
Write-Host Stopping...
#psexec ........
#############################################

Этот сценарий запускается с помощью команд sqlcmd и psexec и копирования. Мне нужно регистрировать активность скрипта PowerShell. Затем я написал bat-файл, который запускает скрипт PowerShell.

#############################################################
del d:\scripts\log.log
powershell -file d:\scripts\script.ps1 >> d:\scripts\log.log
#############################################################

У меня проблема с форматированием файла журнала. Этот файл выглядит так:

Выполняется в базе данных№1Выполняется в базе данных№2Выполняется в базе данных№3Остановка...

И я хочу, чтобы этот журнал выглядел так:

Запуск на базе данных No1

некоторые данные из sqlcmd

Запуск на базе данных No2

некоторые данные из sqlcmd

Запуск на базе данных No3

некоторые данные из sqlcmd

Остановка...

Некоторые данные psexec

и т.п.


person Bartolini    schedule 02.12.2014    source источник


Ответы (1)


Я бы не стал использовать write-host. В основном он предназначен для записи на консоль.

Я бы использовал write-output или write-verbose, эти два командлета передают вывод в конвейер или, в вашем случае, при использовании перенаправления к файлу:

$Database = @("DatabaseNo1","DatabaseNo2","DatabaseNo3")
Write-Output "Running on $($Database[0])"
#sqlcmd ...........
Write-Output "Running on $($Database[1])"
#sqlcmd ...........
Write-Output "Running on $($Database[2])"
#sqlcmd ...........
Write-Output Stopping...
#psexec ........
#############################################

Вот вывод, когда выполняется следующая команда:

powershell -file d:\scripts\test.ps1 >> d:\scripts\log.log

Running on DatabaseNo1
Running on DatabaseNo2
Running on DatabaseNo3
Stopping...
person Micky Balladelli    schedule 02.12.2014