我具有以下PowerShell脚本来检查文件是否被锁定-如何将0或999输出到文本文件,例如C:\ stuff \ PSOutput.txt?
context.Database>EnsureCreated()
答案 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。