Os aplicativos de console não funcionam no Powershell

Os aplicativos de console não funcionam no Powershell

Herdei uma caixa do Windows Server 2003 r2. Eu tenho um script Powershell que preciso executar na máquina, mas algo parece terrivelmente errado com o sistema. Por exemplo, abrir um console Powershell e entrar ipconfigobtém a seguinte resposta:

The term 'ipconfig' is not recognized as a cmdlet, function, operable program, or script file.  Verify the term and try again.

Meu script Powershell está tentando chamar pscp.exe (do projeto PuTTY) e obtém o mesmo erro acima.

Minha primeira suspeita foi que era um problema de caminho e, com certeza, quando abri a janela de variáveis ​​de ambiente, a PATHvariável nem existia. Então eu o criei e verifiquei se o diretório que continha pscpestava listado lá. Ainda não há dados.

A execução dos mesmos comandos (ipconfig ou pscp) em cmd.exe funciona conforme o esperado depois que adicionei algumas entradas básicas à PATHvariável (%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;).

$env:pathno Powershell retorna os valores da PATHvariável, mas o PowerShell ainda não executa programas que estão nesses diretórios. get-host | select versionretorna 1.0.0.0.

Alguma dica?

Responder1

Parece que seu ambiente está um pouco bagunçado. Aqui estão algumas etapas extras de solução de problemas, esperamos que uma delas forneça informações mais úteis:

Tente executar o comando usando o caminho completo: c:\windows\system32\ipconfig.exe

Experimente o cmdlet invocar-expressão:

invoke-expression -command "ipconfig"  

ou:

invoke-expression -command "c:\windows\system32\ipconfig.exe"  

Tente usar o provedor de processos .Net (você não conseguirá ver os resultados da chamada, mas ele fornecerá algumas informações que podem ser úteis):

[System.Diagnostics.Process]::Start("c:\windows\system32\ipconfig.exe")

Responder2

Tente correr powershell -NoProfilee veja se as coisas funcionam. Se for assim. então o seu problema é o script do perfil, que você pode editar com o notepad $profile.

Tente abrir uma janela CMD e execute ipconfig-a. Se funcionar no CMD, mas não no PowerShell, compare o ambiente encontrado em cada um. A maneira mais fácil é provavelmente executar setno CMD e cmd.exe /C setna janela do PowerShell e comparar os resultados.

Responder3

É um pouco estranho ver seu PATH expresso em termos de outras variáveis ​​de ambiente. Eu me pergunto se isso poderia estar tornando as coisas complicadas.

Por exemplo, aqui está o que eu esperaria ver na sua variável PATH (assumindo que C: é sua unidade de instalação principal):

PATH=C:\Windows\System32;C:\Windows;C:\Windows\System32\Wbem;

informação relacionada