如何远程注册静态ETW表现为网站部署的一部分



我正在努力使用New Eventsource(Microsoft.diarostics.tracing.tracing.eventsource)及其对ETW频道的新支持以写入Windows事件日志。该代码已经到位,并且可以正确地写入我的工作站事件日志。我很激动。

现在是困难的部分。利用此功能的应用程序是一项Web服务,我们将其与WebDeploy一起部署,作为构建部署测试系统的一部分。因为使用ETW渠道需要通过Wevtutil.exe进行静态注册。Eventsource文档指出,最好是安装程序的一部分,但这似乎与WebDeploy的功能相距甚远。

我们的目标是,在执行WebDeploy软件包之前,我们将能够在目标服务器上自动卸载居民,然后在WebDeploy Sync完成后导入新的清单。我们不是对此设定的,但这似乎是最明智的方法。

因此,似乎这可能是Powershell erooting可能能够解决的问题,但这不是我对的领域。

有人做过这样的事情吗?有更好或更简单的方法吗?

这里只有少数要求。a)远程计算机必须具有powershell远程启用启用,这也意味着它必须具有PowerShell 2.0或更高b)在本地计算机上运行的脚本必须能够作为管理员运行,并且所使用的凭据必须在远程计算机上具有管理特权。如果您可以满足这些要求,那么这应该是蛋糕。

在远程计算机上您需要执行两个命令才能启用远程:

Set-ExecutionPolicy RemoteSigned
Enable-PSRemoting -Force

然后在高架提示中的本地计算机上,您应该能够从脚本执行类似的内容:

# these two paths assume these files have been copied to the remote computer and to a directory
# in which the service account has privileges to read i.e. not under a userprofile dir.
$etwDllPath = c:somepathmyassembly.mysourcename.etwManifest.dll
$etwManPath = c:somepathmyassembly.mysourcename.etwManifest.man
$s = New-PSSession -ComputerName <remoteComputerName>
Invoke-Command -Session $s {param($man) wevtutil.exe um $man} -arg $etwManPath
Invoke-Command -Session $s {param($man,$dll) wevutil.exe im $man /rf:$dll /mf:$dll} -arg $etwManPath, $etwDllPath
Remove-PSSession $s

如果您可以避免带有空格的远程路径,请尝试。这将使这更容易。: - )

最新更新