powershell写入文件

时间:2018-03-27 10:18:36

标签: powershell user-interface streamwriter

我已经编写了一个用于在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()

我在这里做错了这个文件的句柄没有发布给其他人使用?

3 个答案:

答案 0 :(得分:0)

创建一个流基本上阻止了对任何文件的访问或创建其他流,除非它在sharemode中是al xlsx,我对日志类似日志所做的就是使用add-content。

即:

Add-content -value "test" -path $logRoute

对不起任何错别字,我在我的手机上。但那应该可以解决你的问题

答案 1 :(得分:0)

您是否尝试过使用细粒度的.NET互斥体?每次需要记录消息时,请锁定互斥锁,使用Add-Content附加消息,然后释放互斥锁。这应该确保文件永远不会同时打开多次,这几乎肯定是导致问题的原因。

Here's an article on almost exactly this issue.

答案 2 :(得分:0)

使用ACL命令有助于解决问题,因为新创建的文件缺少为其他用户写入的权限。