如何使用perfmon / logman在主(Windows)虚拟机上设置日志logging,写入networking上的另一台机器?

在一般情况下,我知道如何设置日志logging以写入远程位置 – 只需在创build日志作业时使用完整的UNCpath(例如\\ HOST-PC \ directory \ logoutput.etl)指定输出文件名即可。 但是,如果从启用了日志logging的主VM创build新的虚拟机,则会出现问题:每个虚拟机都将日志写入networking中完全相同的文件。 我需要find一个方法,每个新的虚拟机将自动写入一个独特的远程文件。

我已经尝试使用logman.exe(例如\主机\目录\%计算机名%\ log.etl)设置日志在UNCpath中使用%ComputerName%环境variables,希望每个虚拟机将自动扩展此以包括其唯一的名称,但这不起作用 – 你只是得到一个名为“%ComputerName%”的文件夹,没有variables被展开。 这是尽pipe事实上,如果你使用例如%SystemRoot%,这确实得到正确扩展(虽然当然这会在这种情况下创build一个无效的path)。 我不确定是什么导致一些variables被扩大,而不是其他的。

任何更好的想法?

我没有看到如何使用logman ,但是通过UI和COM接口,您可以设置子目录格式以将计算机名称作为前缀。

性能日志和警报对话框显示“计算机名称的前缀子目录”选项

有关如何以编程方式设置选项的文档 ,请参阅MSDN 。

编辑:有问题的checkbox出现在数据集收集器和性能计数器本身。 性能计数器似乎有灰色的选项。 请确保右键单击MMC树中“Data Collector Sets> User Defined”下的项目以调整相应的选项。

另外,Powershell:

 $taskName = "daily_perf_log" $qualifiedName = "Service\{0}" -f $taskName # retrieve the collection set $dcss = new-object -com Pla.DataCollectorSetCollection $dcss.GetDataCollectorSets($null, $qualifiedName) $dcs = $dcss.Item(0) # update # 3 to enable, 1 to disable (http://msdn.microsoft.com/en-us/library/windows/desktop/aa371811(v=vs.85).aspx) $dcs.SubdirectoryFormat = 3 <# Prepend computer name #> # save # 1 create new / 2 update / other options (http://msdn.microsoft.com/en-us/library/windows/desktop/aa371873(v=vs.85).aspx) $dcs.Commit($qualifiedName, $null, 2 <# update only #>)