我正在尝试设置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
我在做什么错?预先感谢!
答案 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