gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 18:26:09 26 4
gpt4 key购买 nike

我正在尝试使用新的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com