Powershell
如何通過 PowerShell 使用非管理員使用者停止未連接到域的遠端伺服器上的服務
我已經開始編寫腳本來實現這一點:
$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