【问题标题】:Trying to create process on remote PC from network share尝试从网络共享在远程 PC 上创建进程
【发布时间】:2016-01-30 03:04:58
【问题描述】:

我有这个 Powershell:

    Try
    {
       #Start the installer remotely
       $process = ([WMICLASS]"\\$comp\ROOT\CIMV2:Win32_Process").Create($InstallString)
       if ( $process.ReturnValue -eq 0 )
       {
          $logstr = $comp + ": spawned process " + $process.ProcessId
          Write-Host -ForegroundColor GREEN $logstr
       }
       else
       {
          Write-Host -ForegroundColor RED "${comp}: failed to create process ${InstallString}"
          Continue
       }
    }
    Catch
    {
       Write-Host -ForegroundColor RED "${comp}: error: $_.Exception.Message"
       Continue
    }

其中$comp 是有效的PC 名称,InstallString\\SERVERNAME\ShareFolder\setup.exe

ShareFolder 中包含一个安装程序及其文件。我希望我可以运行这样的设置来远程安装,但它不起作用。它落入了else:

COMPUTERNAME: failed to create process \\SERVERNAME\ShareFolder\setup.exe

我错过了什么?我可以在 Powershell 之外访问此路径。

这适用于本地路径。我需要 Powershell 中的一些特殊语法来指向这个共享吗?

如果 exe(嗯,不同的安装程序)位于 COMPUTERNAME 上并且代码仍然远程执行,则此代码有效。

【问题讨论】:

标签: powershell


【解决方案1】:

可能是权限问题。根据这个链接:Creating Processes Remotely

如果帐户具有root\cimv2 的执行方法和远程启用权限,则远程创建的进程可以在任何帐户下运行。执行方法和远程启用权限在控制面板的 WMI 控件中设置。

【讨论】:

  • 我可以在本地通过不同的安装程序使用相同的WMICLASS 行该行没问题。权限是指ShareFolder 与谁在运行Powershell 的权限份额?如果是这样,我运行此 Powershell 的帐户就可以完全访问此共享。
  • 您需要为您用于创建进程的帐户设置命名空间 root\cimv2 的安全性。此链接Setting Namespace Security with the WMI Control 可能会有所帮助。如果远程启用权限在本地而不是远程工作,您可能需要启用它。
  • 已启用。我的意思是我可以运行脚本并使用远程计算机上的安装程序(而不是网络共享)访问远程计算机。
  • 好的,我想我误解了这个问题。
  • @Zeno 很可能是进程正在运行的身份。您必须拥有创建进程的凭据,但该进程可能是在没有网络资源访问权限的 SYSTEM 上下文下创建的,因此它无权访问您的远程共享。
猜你喜欢
  • 1970-01-01
  • 2017-11-30
  • 2016-01-16
  • 1970-01-01
  • 2013-09-05
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
  • 2013-08-31
相关资源
最近更新 更多