2014-12-02 36 views
0

我寫在PowerShell中一個簡單的腳本:PowerShell和bat文件記錄

############### 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腳本活動。 後來我寫了運行PowerShell腳本

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

我有一個格式化的日誌文件有問題bat文件。 這個文件看起來像:

上DatabaseNo3Stoping DatabaseNo2Running運行在DatabaseNo1Running ...

而且我想這個數看起來像:

從SQLCMD

運行在DatabaseNo1

一些數據

在DatabaseNo2上運行

來自sqlcmd的一些數據

從SQLCMD

停止運行上DatabaseNo3

一些數據...

一些PSEXEC數據

回答

2

我不會用write-host。基本上它的用途是寫入控制檯。

使用重定向對文件時,我會使用write-outputwrite-verbose,這兩個cmdlet將輸出傳遞到管道,或者在您的情況:

$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... 
+0

大:)它正常工作,THX :) – Bartolini 2014-12-02 18:15:31