我已经编写了一个用于在AD中进行更改的GUI,我需要记录每个操作。此GUI由多个用户同时使用并写入一个文件,但只有第一个写入日志文件的人才能实际写入该文件。其他人都拒绝访问。 我正在使用这样的流式编写器。
$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()
我在这里做错了这个文件的句柄没有发布给其他人使用?
答案 0 :(得分:0)
创建一个流基本上阻止了对任何文件的访问或创建其他流,除非它在sharemode中是al xlsx,我对日志类似日志所做的就是使用add-content。
即:
Add-content -value "test" -path $logRoute
对不起任何错别字,我在我的手机上。但那应该可以解决你的问题
答案 1 :(得分:0)
您是否尝试过使用细粒度的.NET互斥体?每次需要记录消息时,请锁定互斥锁,使用Add-Content
附加消息,然后释放互斥锁。这应该确保文件永远不会同时打开多次,这几乎肯定是导致问题的原因。
答案 2 :(得分:0)
使用ACL命令有助于解决问题,因为新创建的文件缺少为其他用户写入的权限。