gpt4 book ai didi

powershell - 我想知道如何在$中执行此操作吗?在PowerShell中

转载 作者:行者123 更新时间:2023-12-03 08:07:30 35 4
gpt4 key购买 nike

请问$?值一直设置为true?在下面的示例中,由于我编写了silentlycontinue,因此将其设置为TRUE。在此脚本中,我正在管理文件的错误处理,以从用户输入中获取内容:用于测试文件是否繁忙的脚本,请等待2秒钟,然后再次访问文件,如下所示:

$filecontent =  get-content $filename -ea silentlycontinue 
**while (-not $?)**
{
$filecontent = get-content $filename -ea silentlycontinue
start-sleep: -sec 2
}

最佳答案

$? Contains the execution status of the last operation. It contains TRUE if the last operation succeeded and FALSE if it failed.



它的值与ErrorActionPreference设置无关:
PS>$ErrorActionPreference="continue"
PS>gc afile.txt
gc : Impossible de trouver le chemin d'accès « C:\Users\u1\afile.txt », car il n'existe pas.
Au caractère Ligne:1 : 1
+ gc afile.txt
+ ~~~~~~~~~~~~

+ CategoryInfo : ObjectNotFound: (C:\Users\u1\afile.txt:String) [Get-Content], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

PS>$?
False
PS>$ErrorActionPreference="silentlycontinue"
PS>gc afile.txt #no error message displayed
PS>$?
False

解决此问题的更好方法是通过将$ ErrorActionPreference设置为“stop”并使用try catch语句来使所有错误都终止。
function openFile{
try{
$file=[System.io.File]::Open('c:\windows\windowsupdate.log', 'Open', 'Read', 'None')
}
catch{
write-host "File is locked"
start-sleep 2
openFile
}
finaly{
return $file
}
}

$ErrorActionPreference="stop"
$file=openFile

关于powershell - 我想知道如何在$中执行此操作吗?在PowerShell中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29691140/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com