PerfMon生成的文件的权限问题

我们试图使用PerfMon中的Data Collector Set(在Windows Server 2008R2系统上)来实现一些数据logging到CSV文件。

我们遇到的问题是,我们(似乎)无法控制perfmon创build的日志文件上设置的权限

我们想要的是由perfmon创build的日志文件具有Everyone:F权限(对每个人都完全控制)。 所以,我们有一个目录结构设置,所有日志都放到一个文件夹中:

c:\ vms \ PerfMonLogs \%MACHINENAME%(例如c:\ vms \ PerfMonLogs \ EvaluationG2)

在上面的例子中,c:\ vms \ PerfMonLogs \ EvaluationG2拥有Everyone:F(下面是这个目录的icacls)

(OI)(CI)(F)BUILTIN \ Administrators:(OI)(CI)(F)BUILTIN \ Performance日志用户:(OI)(OI) R)

运行数据收集器集时,会在c:\ vms \ PerfMonLogs \ EvaluationG2中创build新的子文件夹和文件,例如(C:\ vms \ PerfMonLogs \ EVALUATIONG2 \ M11d26y2012N3)

这些目录和文件中的每一个都具有以下权限:

(OI)(CI)(F)BUILTIN \性能日志用户:(OI)(R)(OI)(CI)(F)BUILTIN \ Administrators:

所以这些新的文件夹,而不是简单地从父文件夹inheritance权限(不知道为什么)。

现在,我们尝试使用收集器集合上的安全选项卡添加Everyone:F(无骰子)。

有任何想法吗? 我们如何控制perfmon数据收集器集合生成的日志文件的权限?

数据收集器集可以包含有关计算机的敏感信息,因此访问它们通常要求用户至less是Performance Log Users组的成员。 我不相信你可以像自己说的那样自动修改权限(Everyone FullControl)。

这是如何解决方法:

作为计划任务运行此PS脚本:

$Path = "C:\PerfLogs\Admin\New Data Collector Set" $ACL = (Get-Item $Path).GetAccessControl("Access") $ACE = New-Object System.Security.AccessControl.FileSystemAccessRule("Everyone", "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow") $ACL.AddAccessRule($ACE) ForEach($_ In Get-ChildItem $Path -Recurse) { Set-Acl -ACLObject $ACL $_.FullName } 

我使用PS 2.0(与2008R2相同)在Windows 7上testing了这一点,并确认它在$ Pathvariables中定义的目录下recursion地在每个对象上放置了“Everyone Full Control”ACE。

编辑:起初我以为使用DCS的“属性”页面中的“任务”选项卡“数据收集器设置停止时运行此计划的任务”,但这不适用于计划任务,而是WMI任务。

编辑#2:好吧,这变得非常疯狂,但你可以创build一个新的计划任务,其触发器将启动“在一个事件”。 然后单击自定义,然后单击“新build事件筛选器”。 然后手动编辑XMLfilter:

 <QueryList> <Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational"> <Select Path="Microsoft-Windows-TaskScheduler/Operational"> *[System[TimeCreated[timediff(@SystemTime) &lt;= 3600000]]] and *[System[(EventID='102')]] and *[EventData[Data and (Data='YOUR DATA COLLECTOR SET NAME')]] </Select> </Query> </QueryList> 

现在,您将创build一个计划任务,在您的Data Collector集完成运行时触发,并将recursion修改目录结构的ACL为“Everyone Full Control”。