powershell写入文件
powershell write to file
我已经编写了一个用于在 AD 中进行更改的 GUI,我需要记录每个操作。此 GUI 一次由多个用户使用并写入一个文件,但只有写入日志文件的第一个人才能真正写入。其他人都被拒绝访问。
我正在使用这样的 streamwriter。
$File = "$LogPath$LogDate.log"
$stream = [System.IO.StreamWriter] $File
$stream.WriteLine("----------------------------------------------------")
$stream.WriteLine("$LogTime $ExecUser | Set expire date for user $setenddateuser to $usernewenddate")
$stream.close()
我在这里做错了什么,这个文件的句柄没有释放给其他人使用?
创建流基本上会阻止任何文件的访问或其他流的创建,除非它是共享模式下的al xlsx,我对日志类似日志的处理是使用add-content.
即:
Add-content -value "test" -path $logRoute
抱歉有任何打字错误,我正在使用手机自动提款机。但这应该可以解决您的问题
您是否尝试过使用 fine-grained .NET 互斥体?每次需要记录消息时,锁定互斥量,使用 Add-Content
追加消息,然后释放互斥量。这应该确保该文件永远不会同时打开多次,这几乎肯定是您的问题的原因。
使用 ACL 命令帮助解决了这个问题,因为新创建的文件缺少其他用户的写入权限。
我已经编写了一个用于在 AD 中进行更改的 GUI,我需要记录每个操作。此 GUI 一次由多个用户使用并写入一个文件,但只有写入日志文件的第一个人才能真正写入。其他人都被拒绝访问。 我正在使用这样的 streamwriter。
$File = "$LogPath$LogDate.log"
$stream = [System.IO.StreamWriter] $File
$stream.WriteLine("----------------------------------------------------")
$stream.WriteLine("$LogTime $ExecUser | Set expire date for user $setenddateuser to $usernewenddate")
$stream.close()
我在这里做错了什么,这个文件的句柄没有释放给其他人使用?
创建流基本上会阻止任何文件的访问或其他流的创建,除非它是共享模式下的al xlsx,我对日志类似日志的处理是使用add-content.
即:
Add-content -value "test" -path $logRoute
抱歉有任何打字错误,我正在使用手机自动提款机。但这应该可以解决您的问题
您是否尝试过使用 fine-grained .NET 互斥体?每次需要记录消息时,锁定互斥量,使用 Add-Content
追加消息,然后释放互斥量。这应该确保该文件永远不会同时打开多次,这几乎肯定是您的问题的原因。
使用 ACL 命令帮助解决了这个问题,因为新创建的文件缺少其他用户的写入权限。