enter-pssession出现问题:“无法找到接受参数的位置参数”

时间:2018-10-03 16:56:22

标签: powershell

我正在尝试设置PS Remoting / Win-RM,并具有以下内容:

$primary = 'server1'
$user = $env:UserName
$admUser = Get-Credential -UserName "domain\adm-$user" -Message 'Enter your *ADMIN* password:'

Enter-PSSession -ComputerName $primary -Credential $admUser {
  hostname
}

但是,这将返回以下错误(我已经从控制台进行了测试,并且可以正常工作,因此我的脚本有问题)

Windows PowerShell credential request.
Enter your *ADMIN* password:
Password for user domain\adm-user1: ***************

Enter-PSSession : A positional parameter cannot be found that accepts argument '
hostname
'.
At line:5 char:1
+ Enter-PSSession  -ComputerName $primary -Credential $admUser {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Enter-PSSession], ParameterBindingException
    + FullyQualifiedErrorId :PositionalParameterNotFound,Microsoft.PowerShell.Commands.EnterPSSessionCommand

我在做什么错?预先感谢!

1 个答案:

答案 0 :(得分:2)

Enter-PSSession打开与远程系统的控制台连接。

如果要在远程系统上运行命令,则要使用Invoke-Command

此外,您100%始终需要将脚本块传递给某个参数(减去默认情况下可接受的某些极端情况)。在这种情况下,我们需要使用-Scriptblock

示例:

Invoke-Command -ComputerName $primary -Credential $admUser -ScriptBlock {
    hostname
}

$session = New-PSSession -ComputerName $primary -Credential $admUser

Invoke-Command -Session $session -ScriptBlock {hostname}

Invoke-Command -Session $session -ScriptBlock {$env:USERNAME}

Disconnect-PSSession -Session $session