PowerShell输出到文本

时间:2018-11-29 09:22:58

标签: powershell

我具有以下PowerShell脚本来检查文件是否被锁定-如何将0或999输出到文本文件,例如C:\ stuff \ PSOutput.txt?

context.Database>EnsureCreated()

4 个答案:

答案 0 :(得分:1)

不要exit脚本。将退出值保存到变量中并将其写入文件。

$file = "\xxxx\xxxxx\xxxxxxx\test.log"
try { [IO.File]::OpenWrite($file).close(); $exit = 0 } catch { $exit = 999}
$exit | Out-File -FilePath "C:\Path\to\myFile.txt"

exit停止脚本并返回退出值。要对脚本进行更多处理(例如将值保存到文件中),则不应使用exit。

答案 1 :(得分:0)

您将必须在脚本的第一行中编辑文件的路径:

$fileName = "test.txt"                                                           
$file = New-Object -TypeName System.IO.FileInfo -ArgumentList $fileName
[System.IO.FileStream] $fs = $file.OpenWrite(); 
if (!$?) {
"0" | Out-File "C:\PSOutput.txt"
}
else {
$fs.Dispose()
"999" | Out-File "C:\PSOutput.txt"
}

答案 2 :(得分:0)

这应该有效:

$file = "\\xxxx\xxxxx\xxxxxxx\test.log"
$exitCode = 0
if (Test-Path -Path $file -PathType Leaf) {
    $fileInfo = New-Object System.IO.FileInfo $file
    try {
        $stream = $fileInfo.Open([System.IO.FileMode]::Open, [System.IO.FileAccess]::ReadWrite, [System.IO.FileShare]::None)
        if ($stream) { $stream.Close() }
    } 
    catch {
        $exitCode = 999  # the file is locked by a process.
    }
}
$exitCode | Out-File -FilePath "C:\stuff\PSOutput.txt"

答案 3 :(得分:0)

代码中的.container { padding: 20px; display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: 50px 90px; grid-gap: 5px; } .container .item { background: red; padding: 10px; display: flex; justify-content: center; align-items: center; color: #fff; } .container .two-column-right { grid-column: 3 / -1; } .container .two-column-left { grid-column: 1 / 3; }语句会导致脚本退出,直到脚本将<div class='container'> <div class='item'>1</div> <div class='item'>2</div> <div class='item'>3</div> <div class='item'>4</div> <div class='item two-column-left'>5</div> <div class='item two-column-right'>6</div> </div> <div class='container'> <div class='item'>1</div> <div class='item'>2</div> <div class='item'>3</div> <div class='item'>4</div> <div class='item'>5</div> <div class='item'>6</div> <div class='item two-column-right'>7</div> </div>写入输出文件为止。但是,即使到达了那里,它实际上也不会记录退出代码,因为exit关键字不会神奇地用退出代码填充(未定义)变量$exit。您可能将它与automatic variable exit混淆了,后者在被呼叫者退出后在呼叫者一侧得到更新。

您真正想做的是定义一个自定义函数,该函数可以正确设置退出代码,并在实际退出之前完成您想做的所有其他事情:

$exit

然后像下面这样在您的代码中使用它:

$LastExitCode

function ExitWithCode($exitcode) { $host.SetShouldExit($exitcode) $exit | Out-File -FilePath 'C:\stuff\PSOutput.txt' exit $exitcode } 外还使用try { [IO.File]::OpenWrite($file).Close() ExitWithCode 0 } catch { ExitWithCode 999 } 可确保您的脚本始终设置正确的退出代码regardless of how it's invoked