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