Powershell

如何通過 PowerShell 使用非管理員使用者停止未連接到域的遠端伺服器上的服務

  • November 6, 2015

我已經開始編寫腳本來實現這一點:

$SecurePassword = ConvertTo-SecureString –String $Password –AsPlainText -Force 
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $UserName, $SecurePassword
$sess = New-PSSession -ComputerName $IPAddress -Credential $Credential
Invoke-Command -Session $sess -ScriptBlock {Get-Service}
Remove-PSSession -Session $sess

但我收到此連接錯誤:

新 PSSession :

$$ xx.xx.xx.xx $$連接到遠端伺服器 xx.xx.xx.xx 失敗並顯示以下錯誤消息:WinRM 無法完成操作。驗證指定的電腦名稱是否有效,該電腦可通過網路訪問,並且 WinRM 服務的防火牆例外已啟用並允許從該電腦進行訪問。預設情況下,公共配置文件的 WinRM 防火牆例外限制對同一本地子網中的遠端電腦的訪問。有關詳細資訊,請參閱 about_Remote_Troubleshooting 幫助主題。

  • 為了嘗試使腳本正常工作,我Enable-PSRemoting在客戶端和遠端伺服器上都執行了該命令。
  • 由於遠端伺服器不是域的一部分,我已將伺服器 IP 地址添加到TrustedHosts客戶端伺服器上。

在許多其他頁面中,我一直在使用頁面來嘗試解決此問題,並且據我所知它應該可以正常工作(或者至少沒有連接問題)。

  • 我連接到遠端伺服器的使用者不是管理員,而是Remote Managers Group.
  • 我還按照這個問題的建議授予對服務的訪問權限。我不認為它已經走到了這一步,但為了完整起見,我想提一下。

非常感謝任何答案、建議、建議等。謝謝。

問題出在遠端伺服器上的防火牆設置上。各州HOW TO ADD A FIREWALL EXCEPTION部分about_Remote_Troubleshooting

Enable-PSRemoting 嘗試為 WS-Management 通信創建防火牆例外。在 Windows 的伺服器版本上,它會為所有網路位置創建防火牆例外。

它確實做到了。但是,如果網路配置文件是專用的,它只允許來自本地子網上的伺服器的連接,而我的情況並非如此。在向防火牆規則添加額外的範圍後,我能夠連接到伺服器。

我還有一個問題要解決,因為我無法獲得正在使用的服務列表,Get-Service但我知道我要停止的服務的名稱,我可以將其替換為Stop-Service. 腳本現在看起來像:

$securePassword = ConvertTo-SecureString –String $password –AsPlainText -Force 
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $userName, $securePassword
$sess = New-PSSession -ComputerName $ipAddress -Credential $credential
$scriptBlock = {
   $serviceName = "SeriveName"
   Stop-Service -Name $serviceName
}
Invoke-Command -Session $sess -ScriptBlock $scriptBlock
Remove-PSSession -Session $sess

引用自:https://serverfault.com/questions/734047