Tenho um projeto para conectar-me a um servidor Windows remoto e executar um script Powershell.
Existe algum comando que eu possa executar na máquina remota para saber se ela foi configurada com o PowerShell por padrão, para que eu possa executar meu script diretamente usando o PowerShell em vez do CDOS?
Este comando pode ser executado no PowerShell ou no CDOS.
Responder1
Sua pergunta indicaria que você é muito novo no PowerShell ou, no mínimo, no PSRemoting. Portanto, dedique algum tempo para se atualizar sobre o assunto usando o YouTube, o MSDN Channel9 e os sites do MS Learning, pesquisando PowerShell inicial/intermediário/avançado e, especificamente, PowerShell Remoting e PowerShell usando SSH.
Se você não receber um erro ao tentar usar qualquer comando PowewrShell no host remoto, então está ativado. Só porque está ativado, nem sempre significa que está disponível para você. Muitos comandos PSRemoting exigem que você use uma conta que esteja no grupo de administradores locais do host de destino.
Como verificar se um alvo local ou remoto tem o PSRemoting habilitado é algo comum, existem cmdlets para tais verificações...
Exemplos):
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
... e bem documentado no TechNet, nos documentos do MS, no site, nos arquivos de ajuda do PowerShell e em muitos blogs e sites de perguntas e respostas em toda a web. Basta fazer uma pesquisa simples para encontrar esses itens e exemplos.
Pesquise 'validar se o psremoting está habilitado em um host remoto' Exemplos de ocorrências:
Como detectar se a comunicação remota do PowerShell está habilitada
Habilite o PowerShell Remoting e verifique se está habilitado