如何在powershell中运行.exe文件并将结果写入日志文件
我希望从powershell运行SQLPLUS。所以我想运行一个SQLPLUS.exe,然后执行一个SQL文件。一旦运行,如果成功,我想写入日志文件“这是一个成功”或“这是一个失败” 我已尝试按以下方式运行.exe如何在powershell中运行.exe文件并将结果写入日志文件,powershell,exe,Powershell,Exe,我希望从powershell运行SQLPLUS。所以我想运行一个SQLPLUS.exe,然后执行一个SQL文件。一旦运行,如果成功,我想写入日志文件“这是一个成功”或“这是一个失败” 我已尝试按以下方式运行.exe &'path\sqlplus.exe' 'system/password@dbase as sysdba' '@themainscript.sql' 但我发现下一部分很难,因为如果成功的话,就要写入日志文件。我不想检查它是否成功,我需要知道如果成功,如何写入日志文件尝试查
&'path\sqlplus.exe' 'system/password@dbase as sysdba' '@themainscript.sql'
但我发现下一部分很难,因为如果成功的话,就要写入日志文件。我不想检查它是否成功,我需要知道如果成功,如何写入日志文件尝试查看Start Transcript命令。它的语法非常简单。只需将文件路径作为参数传递,然后使用Write Host填充文件即可。像这样:
mkdir C:\Temp
Start-Transcript C:\Temp\logfile.txt
#do something
Write-Host "Success!"
Stop-Transcript
此外,您还可以使用$?变量,以确定命令是否成功,或$LASTEXITCODE从调用的进程获取退出代码(如果退出代码为0,则$?返回true)
请注意,开始转录本对于更详细的信息非常有用。。。如果您只想写“It was successful”,那么重定向就足够了:“It was successful”>“SomeFilePathHere”比转录更简单,您可以直接重定向
& 'command.exe' 'arg' 'arg2' > Logfile.txt
如果你只想写成功
$outputofcommand = & 'command.exe' 'arg' 'arg2'
<# logic to check output #>
$outputofcommand > Logfile.txt
$outputfcommand=&'command.exe''arg''arg2'
$outputfcommand>Logfile.txt
我的理解是,您只想记录运行的状态,而不是实际发生的情况
如果sqlplus.exe返回exitcode,您可以在运行该代码后在线执行此操作:
if ($?) {add-content "c:\temp\logfile.txt" "This was a success"} else {add-content "c:\temp\logfile.txt" "This was a failure"}
可能的副本;我建议将重点放在投票最多的答案上,而不是公认的答案上(基本上使用包含上一个命令的成功值的
$?
),同时,写入日志文件“message”>logPath似乎就够了。我几乎从未使用过powershell,因此它可能不是最惯用的构造,但我对它进行了测试successfully@Aaron:这是惯用的,但一个潜在的问题是
创建UTF-16LE文件-通常在v5.0中创建,默认情况下在PSv5.1+中创建(您可以通过配置更改编码,而不是临时更改)。pinkhighlighter:你真的只是在寻找日志路径的信息吗?