通过powershell运行远程进程

时间:2009-11-17 21:56:17

标签: powershell

在将其与用户名,密码和进程关联之前,我有以下代码行来创建访问远程服务器的对象:

$process = [WMIClass]"\\remoteServer\ROOT\cimv2:Win32_Process"

我在两台PC上试过这个,一个没有任何错误,但是另一个我要运行的有一个例外:

Cannot convert value "\\remoteServer\ROOT\cimv2:Win32_Process" to type "System.Manage
  ment.ManagementClass". Error: "Access is denied. (Exception from HRESULT: 0x800
  70005 (E_ACCESSDENIED))"

remoteServer是同一个。不知道我必须在本地PC或远程PC上设置这项工作吗?在两台客户端PC上,用户名都是管理员的成员。

3 个答案:

答案 0 :(得分:11)

您是否考虑过调查PowerShell远程处理?如果您正在运行PowerShell 2.0,我建议您查看它。设置远程处理后,您将能够使用Invoke-Command在远程服务器上执行命令:

Invoke-Command -ComputerName {serverName} –ScriptBlock { commands }

ScriptBlock可以包含任何powershell命令,因此您可以使用此机制启动远程计算机上的进程。要启用远程处理,您需要使用Enable-PSRemoting cmdlet,您可以在http://blogs.msdn.com/powershell/archive/2009/04/30/enable-psremoting.aspxhttp://technet.microsoft.com/en-us/library/dd819498.aspx

获取详细信息

答案 1 :(得分:2)

你有什么理由不想使用psexec吗?

http://technet.microsoft.com/en-us/sysinternals/bb545027.aspx

答案 2 :(得分:1)

我知道这是一篇旧帖子,但我认为您需要做的是在远程计算机上运行以下命令:

“获取-ExecutionPolicy”

听起来像设置为“Restricted”,这意味着它不会运行任何“Invoke-Commands”命令或远程脚本。

您可以将其更改为7个选项中的1个:

  1. Unrestricted_ _ __ (安全性最低,但如果您需要排除设置此选项的麻烦)
  2. RemoteSigned __(只有所有带签名的脚本,这样一个选项)
  3. AllSigned_ _ __ _ _ (如果您需要运行远程脚本,但最好的选项都会签名)
  4. Restricted_ _ ___ (我相信在Windows 7和WS2k8中默认设置此选项)
  5. 默认
  6. 旁路
  7. 未定义