通过Powershell PSSession调用invoke-wmimethod而不是远程机器上的管理员?
Posted
技术标签:
【中文标题】通过Powershell PSSession调用invoke-wmimethod而不是远程机器上的管理员?【英文标题】:Calling invoke-wmimethod via Powershell PSSession without being admin on Remote Machine? 【发布时间】:2012-04-09 18:06:51 【问题描述】:我需要在远程机器上执行批处理文件,正在执行的批处理文件驻留在远程文件共享上。假设我的 ID 在远程计算机上是管理员,我已经能够在 Powershell 中使用 CredSSP 身份验证来执行此操作,但是一旦我删除了管理员访问权限,我就会得到以下信息:
访问被拒绝 + CategoryInfo : InvalidOperation: (:) [Invoke-WmiMethod], ManagementException + FullyQualifiedErrorId : InvokeWMIManagementException,Microsoft.PowerShell.Commands.InvokeWmiMethod
我已尝试按照此处的建议让我的 ID 完全控制 Microsoft.Powershell,但没有成功: http://blogs.msdn.com/b/powershell/archive/2009/11/23/you-don-t-have-to-be-an-administrator-to-run-remote-powershell-commands.aspx
我正在运行的命令:
$s = New-PSSession -computerName $remoteMachine -Credential $cred -Authentication CredSSP
Invoke-Command -Session $s -Scriptblock param($remoteBatchFile) invoke-wmimethod -path win32_process -name create -argumentlist $remoteBatchFile -ArgumentList $remoteBatchFile
Remove-PSSession $s
关于如何解决安全错误的任何建议?我确实有要求从网络位置运行批处理文件,并且 ID 在任何一台机器上都不是管理员。任何建议将不胜感激,谢谢!
【问题讨论】:
【参考方案1】:您正面临可怕的第二跳问题。在 PowerShell 远程会话中,如果不重新进行身份验证,您将无法跳转或轻松引用其他网络资源。使用 CredSSP 是解决此问题的一种方法。我使用的另一种方法是在您的远程会话中添加一个 NET USE 命令来临时将驱动器映射到远程计算机,并指定用户名和密码。
【讨论】:
我已经验证了当我的 ID 在 admin 组中时我可以检索远程机器上的网络资源,所以我相信我已经解决了第二跳问题。我的挂断是能够在没有我的 ID 作为远程计算机上的管理员的情况下这样做。在我看来,错误与 Invoke-WMIMethod 以及我需要配置的某种权限有关,但到目前为止我还无法弄清楚这到底是什么。 如果您只是想在远程计算机上启动批处理文件,则不需要 Invoke-WMIMethod。只需在 Invoke-Command 中运行批处理文件。 我发现如果我从交互式会话中调用它,该方法有效,但我希望将其作为批处理脚本执行。例如,这可行: Invoke-Command -Session $s -Scriptblock param($remoteBatchFile) start-process $remoteBatchFile -ArgumentList $remoteBatchFile 但是,一旦我发出 Remove-PSSession 命令,我启动的可执行文件就会终止。如果将它们作为 WMIMethods 调用,它们会在 PSSession 关闭之后持续存在,这是我以这种方式启动它的理由。 如果您使用 Invoke-WMIMethod,则实际上不需要使用 Invoke-Command。那只是增加了另一层复杂性。该方法将在远程机器上执行。尝试使用 -computername 的 Invoke-WMIMethod。 在没有管理员访问权限的情况下,我仍然无法让 Invoke-WMIMethod 运行。是否有一种简单的方法来监视远程执行过程的完成情况?我可能可以安装它以使用某种文件观察器,但我想知道是否有更简单的方法。以上是关于通过Powershell PSSession调用invoke-wmimethod而不是远程机器上的管理员?的主要内容,如果未能解决你的问题,请参考以下文章
Office 365 Troubleshooting:Import-PSSession 出错
Import-PSSession 在脚本中失败,在 shell 中工作