我有一個專案要連接到遠端 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」範例命中: