Script de comando para saber si el servidor remoto de Windows está usando PowerShell de forma predeterminada o CDOS

Script de comando para saber si el servidor remoto de Windows está usando PowerShell de forma predeterminada o CDOS

Tengo un proyecto para conectarme a un servidor remoto de Windows y ejecutar un script de Powershell.

¿Hay algún comando que pueda ejecutar en la máquina remota para saber si estaba configurada con PowerShell de forma predeterminada, de modo que pueda ejecutar mi script directamente usando PowerShell en lugar de CDOS?

Este comando se puede ejecutar en PowerShell o CDOS.

Respuesta1

Su pregunta indicaría que es muy nuevo en PowerShell o, como mínimo, en PSRemoting. Entonces, dedique tiempo a ponerse al día sobre el tema utilizando YouTube, MSDN Channel9 y los sitios de MS Learning, buscando PowerShell principiante/intermedio/avanzado y específicamente PowerShell Remoting, y PowerShell usando SSH.

Si no recibe un error cuando intenta utilizar cualquier comando de PowewrShell en el host remoto, entonces está activado. El hecho de que esté habilitado no siempre significa que esté disponible para usted. Muchos comandos de PSRemoting requieren que utilice una cuenta que esté en el grupo de administradores locales del host de destino.

Cómo verificar si un objetivo local o remoto tiene PSRemoting habilitado es algo común, existen cmdlets para tales comprobaciones...

Ejemplo(s):

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  

... y bien documentado en TechNet, los documentos de MS, el sitio, los archivos de ayuda de PowerShell y muchos blogs y sitios de preguntas y respuestas en toda la web. Sólo hay que hacer una búsqueda sencilla para encontrar esos elementos y ejemplos.

Busque 'validar si psremoting está habilitado en un host remoto'. Resultados de ejemplo:

Cómo detectar si la comunicación remota de PowerShell está habilitada

Habilite PowerShell Remoting y verifique si está habilitado

información relacionada