powershell - 如何远程注册静态 ETW list 作为网站部署的一部分?

标签 powershell automation webdeploy etw etw-eventsource

我正在尝试使用新的 EventSource(来自 nuget 的 Microsoft.Diagnostics.Tracing.EventSource)及其对 ETW channel 的新支持,以便写入 Windows 事件日志。代码已就位,并正确写入我的工作站事件日志。我很激动。

现在是困难的部分。利用此功能的应用程序是一个 Web 服务,我们使用 webdeploy 作为构建-部署-测试系统的一部分来部署它。因为使用 ETW channel 需要通过 wevtutil.exe 静态注册提供程序 list 。 EventSource 文档指出这最好作为安装程序的一部分来完成,但这似乎有点超出 webdeploy 的能力。

我们的目标是能够在执行 webdeploy 包之前立即自动卸载驻留在目标服务器上的 list ,然后在 webdeploy 同步完成后导入新的 list 。我们不打算这样做,但这似乎是最明智的方式。

出于这个原因,这似乎是 powershell 远程处理可能能够解决的问题,但这不是我了解的领域。

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

最佳答案

这里只有几个要求。 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:\somepath\myassembly.mysourcename.etwManifest.dll
$etwManPath = c:\somepath\myassembly.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

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

关于powershell - 如何远程注册静态 ETW list 作为网站部署的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21539365/

相关文章:

powershell - 通过CMD和PowerShell进行管道传输时,行为和输出不同

powershell - 解压缩后仅复制某些文件类型

javascript - 使用 VBA 在 Internet Explorer 中自动化 Javascript 表单

linux - 如果服务器重新启动,如何使 couchbase 服务自动启动?

windows - 如果文本文件以数组中的任何字符串开头,则打印该行

windows - Chocolatey的安装路径在哪里?

python - 运行 playbook 后访问 ansible playbook 结果

msbuild - 使用更新数据库运行 Web 发布向导时出现 Visual Studio 2015 异常 SqlScriptPreprocessSqlVariables

deployment - MSDeploy runCommand 使用相对路径

asp.net - 使用 Node js 进行 ASP NET MVC Web 部署(发布)预览 - 错误日志