gpt4 book ai didi

powershell - 无法从PowerShell脚本写入默认的Inno Setup日志文件

转载 作者:行者123 更新时间:2023-12-03 01:26:28 27 4
gpt4 key购买 nike

我想使用Inno Setup默认日志文件记录PowerShell脚本中的错误,但是当我尝试在它们上书写时,它似乎一直在使用。
经过一番研究,我发现时间SetupName_Version.tmp正在使用该文件,但我有点受其困扰。创建辅助日志文件在哪里记录脚本错误可能是一个好主意?我缺少什么?提前致谢。
脚本:

$LogFile=$args[1]
echo "Second arg is $LogFile"
"Second arg is $LogFile" | out-file $LogFile -append
pause
输出:
Second arg is C:\Users\User\AppData\Local\Temp\Setup Log 2020-06-24 #019.txt
out-file : The process cannot access the file 'C:\Users\User\AppData\Local\Temp\Setup Log 2020-06-24 #019.txt'
because it is being used by another process.
At C:\Users\User\AppData\Local\Temp\is-EUMKB.tmp\check_wsl_feature_minimal.ps1:9 char:28
+ "Second arg is $LogFile" | out-file $LogFile -append
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (:) [Out-File], IOException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand

Press Enter to continue...:

最佳答案

日志文件由安装程序打开。两个程序不能同时写入相同的文件。
您将必须在PowerShell脚本中登录到其他文件。如果要将所有信息都放在一个文件中,可以在脚本完成后将PowerShell脚本日志文件复制到安装程序日志。您可以使用 LoadStringsFromFile Log 函数。

var
ResultCode: Integer;
Args, PsLogPath: string;
LogLines: TArrayOfString;
I: Integer;
begin
PsLogPath := ExpandConstant('{tmp}\ps.log');
Args := Format('-ExecutionPolicy Unrestricted -file "script.ps1" "%s"', [PsLogPath]);
Exec('powershell.exe', Args, '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
if not LoadStringsFromFile(PsLogPath, LogLines) then
begin
Log('PowerShell log file does not exist or cannot be read');
end
else
begin
Log('PowerShell log:')
for I := 0 to GetArrayLength(LogLines) - 1 do
begin
Log(LogLines[I]);
end;
end;
end;
日志文件应采用UTF-8编码: Out-File -Encoding utf8

尽管我将使用输出重定向,但要捕获PowerShell脚本生成的所有内容,包括错误/异常,而不是使用 Out-File进行显式日志记录。
  Args := Format(
'/C powershell -ExecutionPolicy Unrestricted -file "script.ps1" > "%s" 2>&1', [
PsLogPath]);
Exec(ExpandConstant('{cmd}'), Args, '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
另一个选择是使用 Start-Transcript

关于powershell - 无法从PowerShell脚本写入默认的Inno Setup日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62558605/

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