命令脚本用于了解远程 Windows 服务器默认使用 PowerShell 还是 CDOS

命令脚本用于了解远程 Windows 服务器默认使用 PowerShell 还是 CDOS

我有一个项目要连接到远程 Windows 服务器并运行 Powershell 脚本。

我可以在远程机器上运行任何命令来了解它是否默认配置了 PowerShell,以便我可以直接使用 PowerShell 而不是 CDOS 运行我的脚本?

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

答案1

您的问题表明您对 PowerShell 或至少 PSRemoting 非常陌生。因此,请花时间使用 YouTube、MSDN Channel9 和 MS Learning 网站来快速了解该主题,搜索初级/中级/高级 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 Remoting 并检查其是否已启用

相关内容