在远程计算机

时间:2017-05-14 19:30:17

标签: powershell client-server invoke-command

我需要在具有管理员权限的远程计算机上执行powershell脚本。 我有2个脚本:客户端和服务器。 当我启动client.ps1时,我在服务器机器上调用命令但是获取访问错误。如果我在server.ps1中使用简单的代码,例如write-host" hello"我就没有错误。

server.ps1:

 Get-service -ComputerName 'client'

client.ps1:

$ScriptBlockContent = { 
        d:\server.ps1
        }
$remote=New-PSSession -ComputerName 'server'
Invoke-Command $remote -ScriptBlock $ScriptBlockContent

2 个答案:

答案 0 :(得分:1)

您的客户端正在尝试打开D:\ server.ps1并拒绝访问。您的脚本块甚至不包含必要的代码,以使powershell无论如何都能处理server.ps1的内容。你有办法复杂化。

您需要正确定义脚本块:

$scriptblock = { Get-service -ComputerName 'client' }
$remote=New-PSSession -ComputerName 'server'
Invoke-Command $remote -ScriptBlock $scriptblock

运行此命令将连接到名为'Server'的计算机并告诉它在Get-Service上运行'Client'您不需要client.ps1和{{1这一切都可以从1个脚本完成。

您还需要确保server.ps1正在服务器上运行和配置。

答案 1 :(得分:1)

您的问题是身份验证。您必须启用服务器才能使用您的凭据。您可以使用CredSSP

执行此操作
  1. 在您的客户端启用此功能:

    启用-WSManCredSSP -Role客户端-DelegateComputer ServerNameHere

  2. 在您的服务器上启用它:

    启用-WSManCredSSP -Role服务器

  3. 现在将其添加到您的Invoke-Command

  4. -Credential Domain\YourUsername -Authentication CredSSP

    对此的评论:使用CredSSP,如果您连接到受损系统(与RDP相同),它很容易窃取您的凭据。请确保仅在安全的计算机上执行此操作。

相关问题