簡體   English   中英

如何使用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 localhost -Credential $cred -ScriptBlock $scriptBlock

如@CB所述,也可以使用計算機的主機名。 在對問題的評論中:

Invoke-Command -ComputerName $env:COMPUTERNAME -Credential $cred `
  -ScriptBlock $scriptBlock

如果您在其他地方需要FQDN,而只想刪除Invoke-Command語句的域部分,則可以這樣刪除它:

Invoke-Command -ComputerName ($hostname -replace '\..*') -Credential $cred `
  -ScriptBlock $scriptBlock

要根據給定的主機名是否是本地主機的名稱來處理目標計算機的名稱,可以執行以下操作:

$server = if (($hostname -replace '\..*') -eq $env:COMPUTERNAME) {
            'localhost'
          } else {
            $hostname
          }

Invoke-Command -ComputerName $server -Credential $cred -ScriptBlock $scriptBlock

請注意,無論哪種方式都必須在本地計算機上啟用WinRM才能使它起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM