用於了解遠端 Windows 伺服器預設使用 PowerShell 還是 CDOS 的命令腳本

用於了解遠端 Windows 伺服器預設使用 PowerShell 還是 CDOS 的命令腳本

我有一個專案要連接到遠端 Windows 伺服器並運行 Powershell 腳本。

我是否可以在遠端電腦上執行任何命令來了解它是否預設配置了 PowerShell,以便我可以直接使用 PowerShell 而不是 CDOS 來運行我的腳本?

此命令可以在 PowerShell 或 CDOS 中執行。

答案1

您的問題表明您對 PowerShell 或至少對 PSRemoting 非常陌生。因此,請花時間透過使用 YouTube、MSDN Channel9 和 MS 學習網站、搜尋初級/中級/高級 PowerShell,特別是 PowerShell Remoting 和使用 SSH 的 PowerShell 來快速了解該主題。

如果當您嘗試在遠端主機上使用任何 PowewrShell 命令時沒有收到錯誤,則表示它已開啟。僅僅因為它已啟用,並不總是意味著它可供您使用。許多 PSRemoting 指令要求您使用目標主機本機管理員群組中的帳戶。

如何檢查本機或遠端目標是否啟用了 PSRemoting 是很常見的事情,有用於此類檢查的 cmdlet...

例):

Get-Command -Name '*pssession*' | Format-Table -AutoSize

CommandType Name                                  Version Source                      
----------- ----                                  ------- ------                      
Cmdlet      Connect-PSSession                     3.0.0.0 Microsoft.PowerShell.Core   
Cmdlet      Disable-PSSessionConfiguration        3.0.0.0 Microsoft.PowerShell.Core   
Cmdlet      Disconnect-PSSession                  3.0.0.0 Microsoft.PowerShell.Core   
Cmdlet      Enable-PSSessionConfiguration         3.0.0.0 Microsoft.PowerShell.Core   
Cmdlet      Enter-AzureRmWebAppContainerPSSession 5.2.0   AzureRM.Websites            
Cmdlet      Enter-PSSession                       3.0.0.0 Microsoft.PowerShell.Core   
Cmdlet      Exit-PSSession                        3.0.0.0 Microsoft.PowerShell.Core   
Cmdlet      Export-PSSession                      3.1.0.0 Microsoft.PowerShell.Utility
Cmdlet      Get-PSSession                         3.0.0.0 Microsoft.PowerShell.Core   
Cmdlet      Get-PSSessionCapability               3.0.0.0 Microsoft.PowerShell.Core   
Cmdlet      Get-PSSessionConfiguration            3.0.0.0 Microsoft.PowerShell.Core   
Cmdlet      Import-PSSession                      3.1.0.0 Microsoft.PowerShell.Utility
Cmdlet      New-AzureRmWebAppContainerPSSession   5.2.0   AzureRM.Websites            
Cmdlet      New-PSSession                         3.0.0.0 Microsoft.PowerShell.Core   
Cmdlet      New-PSSessionConfigurationFile        3.0.0.0 Microsoft.PowerShell.Core   
Cmdlet      New-PSSessionOption                   3.0.0.0 Microsoft.PowerShell.Core   
Cmdlet      Receive-PSSession                     3.0.0.0 Microsoft.PowerShell.Core   
Cmdlet      Register-PSSessionConfiguration       3.0.0.0 Microsoft.PowerShell.Core   
Cmdlet      Remove-PSSession                      3.0.0.0 Microsoft.PowerShell.Core   
Cmdlet      Set-PSSessionConfiguration            3.0.0.0 Microsoft.PowerShell.Core   
Cmdlet      Test-PSSessionConfigurationFile       3.0.0.0 Microsoft.PowerShell.Core   
Cmdlet      Unregister-PSSessionConfiguration     3.0.0.0 Microsoft.PowerShell.Core 


Get-PSSessionConfiguration

# get function / cmdlet details
Get-Command -Name Get-PSSessionConfiguration -Syntax

# Results

Get-PSSessionConfiguration [[-Name] <string[]>] [-Force] [<CommonParameters>]


(Get-Command -Name Get-PSSessionConfiguration).Parameters.Keys

# Results

Name
Force
Verbose
Debug
ErrorAction
WarningAction
InformationAction
ErrorVariable
WarningVariable
InformationVariable
OutVariable
OutBuffer
PipelineVariable

Get-help -Name Get-PSSessionConfiguration -Full
Get-help -Name Get-PSSessionConfiguration -Online

Get-help -Name Get-PSSessionConfiguration -Examples

# Results

Get-PSSessionConfiguration  
Get-PSSessionConfiguration -Name Microsoft* 
Get-PSSessionConfiguration -Name Full | Format-List -Property * 
(Get-PSSessionConfiguration Microsoft.PowerShell.Workflow).PSObject.Properties | Select-Object Name,Value | Sort-Object Name    
dir wsman:\localhost\plugin 
Connect-WSMan -ComputerName Server01    
dir WSMan:\Server01\Plugin  
dir WSMan:\Server01\Plugin\*\Resources\Resource*\Capability | where {$_.Value -eq "Shell"} | foreach {($_.PSPath.split("\"))[3] }   
Enable-WSManCredSSP -Delegate Server02  
Connect-WSMan Server02  
Set-Item WSMan:\Server02*\Service\Auth\CredSSP -Value $true 
Invoke-Command -ScriptBlock {Get-PSSessionConfiguration} -ComputerName Server02 -Authentication CredSSP -Credential Domain01\Admin01    
(Get-PSSessionConfiguration -Name CustomShell).resourceURI  

……並且在 TechNet、MS 文件、網站、PowerShell 幫助文件以及網路上的許多部落格和問答網站上都有詳細記錄。只需進行簡單的搜尋即可找到這些項目和範例。

搜尋「驗證遠端主機上是否啟用了 psremoting」範例命中:

如何偵測是否啟用了 powershell 遠端處理

啟用 PowerShell 遠端處理並檢查是否已啟用

相關內容