如何在powershell中运行.exe文件并将结果写入日志文件

如何在powershell中运行.exe文件并将结果写入日志文件,powershell,exe,Powershell,Exe,我希望从powershell运行SQLPLUS。所以我想运行一个SQLPLUS.exe,然后执行一个SQL文件。一旦运行,如果成功,我想写入日志文件“这是一个成功”或“这是一个失败” 我已尝试按以下方式运行.exe &'path\sqlplus.exe' 'system/password@dbase as sysdba' '@themainscript.sql' 但我发现下一部分很难,因为如果成功的话,就要写入日志文件。我不想检查它是否成功,我需要知道如果成功,如何写入日志文件尝试查

我希望从powershell运行SQLPLUS。所以我想运行一个SQLPLUS.exe,然后执行一个SQL文件。一旦运行,如果成功,我想写入日志文件“这是一个成功”或“这是一个失败”

我已尝试按以下方式运行.exe

 &'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:你真的只是在寻找日志路径的信息吗?