【问题标题】:PSexec vs Built-in WindowsPSexec 与内置 Windows
【发布时间】:2017-10-23 21:15:46
【问题描述】:

所以,我在 PowerShell 中编写工具来在远程计算机上执行文件。我最初使用 PSexec,但使用 win32_process 将它们切换到 .net 框架。当我使用 win32_process 在远程机器上运行安装文件时,它失败了。在远程机器上尝试 gwmi win32_process 之后,失败了。所以访问 wmi 对象可能是问题所在。反正!我最终使用了 PSexec 并且它成功了,并且我证实它确实如此。但是,这让我开始思考 PSexec 如何连接到远程机器,我想知道这里是否有人知道我如何查看 PSexec 源代码,或者是否有人完全知道它是如何连接和执行的。

我在网上找不到任何东西,只有一堆关于它可以做什么的文章。也许我只是不擅长研究。

【问题讨论】:

标签: powershell wmi psexec


【解决方案1】:

我已经使用 Invoke-WmiMethod cmdlet 对远程计算机执行此操作。您需要在可执行路径中包含任何开关,但假设您在本地/远程主机上具有适当的权限,下面的代码示例应该可以让您到达那里。

有关 cmdlet 的更多详细信息,请参阅 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/invoke-wmimethod?view=powershell-5.1

#local path on the remote machine that will be run including any switches needed
$exePath = "c:\mypath\myfile.exe -s -norestart"

# Use FQDN or IP if netbios name is not reachable
$server = "myserver" 

try {
Invoke-WmiMethod -ComputerName $server -Class win32_process -Name create -ArgumentList $exePath -ErrorAction Stop | Out-Null 
}
catch { 
    Write-Host "Failed to execute program on $server. Error Details: $_.Exception.Message" -ForegroundColor Red
}

我无法比较 PSExec 的工作原理,但这种方法在过去仅使用本机 PowerShell 在远程主机上执行应用程序时对我有用。

【讨论】:

  • 您应该在您的Invoke-WmiMethod 电话而不是您的Out-Null 电话上使用-ErrorAction Stop
  • 好收获。更新了答案以反映这一点。
猜你喜欢
  • 1970-01-01
  • 2014-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多