如何使用powershell远程连接到计算机本身
How to remote to the computer itself with powershell
现在我需要 运行 远程机器上的脚本来做一些部署工作,使用:
Invoke-Command -ComputerName $hostName -Credential $cred -ScriptBlock $scriptBlock
如果 $hostName 是调用此命令的计算机,则报告:
message : Access is denied. For more information, see the about_Remote_Troubleshooting Help topic.
+ CategoryInfo : OpenError: (myMachineName:String) [], PSRemotingTransportException
+ FullyQualifiedErrorId : AccessDenied,PSSessionStateBroken
我想运行无论是远程还是本地机器都统一命令。
更新:
我正在使用 Azure 中的机器。此命令有效:
Invoke-Command -ComputerName XXX -Credential $cred -ScriptBlock $scriptBlock
但这个不是:
Invoke-Command -ComputerName XXX.cloudapp.net -Credential $cred -ScriptBlock $scriptBlock
有人可以帮忙吗?
将 localhost
作为计算机名称传递:
Invoke-Command -ComputerName <b>localhost</b> -Credential $cred -ScriptBlock $scriptBlock
如@CB 所述,使用计算机的主机名也应该可行。在问题的评论中:
Invoke-Command -ComputerName <b>$env:COMPUTERNAME</b> -Credential $cred `
-ScriptBlock $scriptBlock
如果您在别处需要 FQDN 并且只想删除 Invoke-Command
语句的域部分,您可以像这样删除它:
Invoke-Command -ComputerName <b>($hostname -replace '\..*')</b> -Credential $cred `
-ScriptBlock $scriptBlock
要根据给定的主机名是否是本地主机的名称来处理目标计算机名称,您可以这样做:
$server = if (($hostname -replace '\..*') -eq $env:COMPUTERNAME) {
'localhost'
} else {
$hostname
}
Invoke-Command -ComputerName $server -Credential $cred -ScriptBlock $scriptBlock
请注意,无论哪种方式,WinRM 都必须在本地计算机上启用才能运行。
现在我需要 运行 远程机器上的脚本来做一些部署工作,使用:
Invoke-Command -ComputerName $hostName -Credential $cred -ScriptBlock $scriptBlock
如果 $hostName 是调用此命令的计算机,则报告:
message : Access is denied. For more information, see the about_Remote_Troubleshooting Help topic.
+ CategoryInfo : OpenError: (myMachineName:String) [], PSRemotingTransportException
+ FullyQualifiedErrorId : AccessDenied,PSSessionStateBroken
我想运行无论是远程还是本地机器都统一命令。
更新: 我正在使用 Azure 中的机器。此命令有效:
Invoke-Command -ComputerName XXX -Credential $cred -ScriptBlock $scriptBlock
但这个不是:
Invoke-Command -ComputerName XXX.cloudapp.net -Credential $cred -ScriptBlock $scriptBlock
有人可以帮忙吗?
将 localhost
作为计算机名称传递:
Invoke-Command -ComputerName <b>localhost</b> -Credential $cred -ScriptBlock $scriptBlock
如@CB 所述,使用计算机的主机名也应该可行。在问题的评论中:
Invoke-Command -ComputerName <b>$env:COMPUTERNAME</b> -Credential $cred `
-ScriptBlock $scriptBlock
如果您在别处需要 FQDN 并且只想删除 Invoke-Command
语句的域部分,您可以像这样删除它:
Invoke-Command -ComputerName <b>($hostname -replace '\..*')</b> -Credential $cred `
-ScriptBlock $scriptBlock
要根据给定的主机名是否是本地主机的名称来处理目标计算机名称,您可以这样做:
$server = if (($hostname -replace '\..*') -eq $env:COMPUTERNAME) {
'localhost'
} else {
$hostname
}
Invoke-Command -ComputerName $server -Credential $cred -ScriptBlock $scriptBlock
请注意,无论哪种方式,WinRM 都必须在本地计算机上启用才能运行。