2014-12-02 76 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