我需要在具有管理员权限的远程计算机上执行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
答案 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
。
在您的客户端启用此功能:
启用-WSManCredSSP -Role客户端-DelegateComputer ServerNameHere
在您的服务器上启用它:
启用-WSManCredSSP -Role服务器
现在将其添加到您的Invoke-Command
:
-Credential Domain\YourUsername -Authentication CredSSP
对此的评论:使用CredSSP,如果您连接到受损系统(与RDP相同),它很容易窃取您的凭据。请确保仅在安全的计算机上执行此操作。