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 ipconfig
obté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 PATH
variável nem existia. Então eu o criei e verifiquei se o diretório que continha pscp
estava 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 à PATH
variável (%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;).
$env:path
no Powershell retorna os valores da PATH
variável, mas o PowerShell ainda não executa programas que estão nesses diretórios. get-host | select version
retorna 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 -NoProfile
e 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 set
no CMD e cmd.exe /C set
na 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;