Powershell:使用并行文件访问权限写入日志文件
我尝试编写一个带有调试输出的日志文件。 我的it在连续运行时运行良好,但一旦在更多实例中启动baseapplication,就会出现错误 在项目实施过程中,您必须遵守以下规定:B:\Logfiles\Startup.log' 进程无法访问该文件,因为它已被另一进程锁定 因此,我尝试执行do-try-catch构造,以便在文件被锁定时重试。 但出于某种原因,这是行不通的:(Powershell:使用并行文件访问权限写入日志文件,powershell,logfile,locked-files,Powershell,Logfile,Locked Files,我尝试编写一个带有调试输出的日志文件。 我的it在连续运行时运行良好,但一旦在更多实例中启动baseapplication,就会出现错误 在项目实施过程中,您必须遵守以下规定:B:\Logfiles\Startup.log' 进程无法访问该文件,因为它已被另一进程锁定 因此,我尝试执行do-try-catch构造,以便在文件被锁定时重试。 但出于某种原因,这是行不通的:( 是否有更好的方法写入日志文件或等待文件解锁?这实际上取决于文件类型。例如,如果您使用MSWord或其他MSOffice文件进
是否有更好的方法写入日志文件或等待文件解锁?这实际上取决于文件类型。例如,如果您使用MSWord或其他MSOffice文件进行日志记录: 运行下面的代码,关闭文件,然后打开文件
$FileName = 'D:\temp\TestDoc.docx'
Try
{
$FileStream = [System.IO.File]::Open($FileName,'Open','Write')
$FileStream.Close()
$FileStream.Dispose()
($IsLocked = $False)
}
Catch [System.UnauthorizedAccessException] {($IsLocked = 'AccessDenied')}
Catch {($IsLocked = $True)}
文本文件没有此问题
但是,为什么要使用文件呢?创建自己的事件日志并直接写入
使用PowerShell创建和使用新的事件日志
你看过使用PowerShell成绩单吗
Get-Command -Name '*transcript*' | ft -a
# Results
<#
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Start-Transcript 3.0.0.0 Microsoft.PowerShell.Host
Cmdlet Stop-Transcript 3.0.0.0 Microsoft.PowerShell.Host
#>
# Get specifics for a module, cmdlet, or function
(Get-Command -Name Start-Transcript).Parameters
(Get-Command -Name Start-Transcript).Parameters.Keys
Get-help -Name Start-Transcript -Examples
# Results
<#
Start-Transcript
Start-Transcript -Path "C:\transcripts\transcript0.txt" -NoClobber
#>
Get-help -Name Start-Transcript -Full
Get-help -Name Start-Transcript -Online
Get命令-Name'*transcript*'| ft-a
#结果
#获取模块、cmdlet或函数的详细信息
(Get命令-名称开始记录)。参数
(Get命令-Name Start Transcript).Parameters.Keys
获取帮助-名称开始记录-示例
#结果
获取帮助-姓名开始记录-完整
获取帮助-姓名开始记录-联机
Get-Command -Name '*transcript*' | ft -a
# Results
<#
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Start-Transcript 3.0.0.0 Microsoft.PowerShell.Host
Cmdlet Stop-Transcript 3.0.0.0 Microsoft.PowerShell.Host
#>
# Get specifics for a module, cmdlet, or function
(Get-Command -Name Start-Transcript).Parameters
(Get-Command -Name Start-Transcript).Parameters.Keys
Get-help -Name Start-Transcript -Examples
# Results
<#
Start-Transcript
Start-Transcript -Path "C:\transcripts\transcript0.txt" -NoClobber
#>
Get-help -Name Start-Transcript -Full
Get-help -Name Start-Transcript -Online