Heredé una caja de Windows Server 2003 r2. Tengo un script de Powershell que necesitaría ejecutar en la máquina, pero algo parece terriblemente mal con el sistema. Por ejemplo, al abrir una consola Powershell e ingresar ipconfig
se obtiene la siguiente respuesta:
The term 'ipconfig' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.
Mi secuencia de comandos de Powershell intenta llamar a pscp.exe (desde el proyecto PuTTY) y aparece el mismo error que el anterior.
Mi primera sospecha fue que se trataba de un problema de ruta y, efectivamente, cuando abrí la ventana de variables de entorno, la PATH
variable ni siquiera existía. Así que lo creé y me aseguré de que el directorio que lo contenía pscp
apareciera allí. Todavía no hay dados.
La ejecución de los mismos comandos (ipconfig o pscp) en cmd.exe funciona como se esperaba una vez que agregué algunas entradas básicas a la PATH
variable (%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;).
$env:path
en Powershell devuelve los valores de la PATH
variable, pero powershell aún no ejecutará programas que estén en esos directorios. get-host | select version
devuelve 1.0.0.0.
¿Alguna pista?
Respuesta1
Parece que tu entorno está un poco desordenado. Aquí hay un par de pasos adicionales para la solución de problemas; con suerte, uno de ellos brindará más información útil:
Intente ejecutar el comando utilizando la ruta completa: c:\windows\system32\ipconfig.exe
Pruebe el cmdlet invoke-expression:
invoke-expression -command "ipconfig"
o:
invoke-expression -command "c:\windows\system32\ipconfig.exe"
Intente utilizar el proveedor de procesos .Net (no podrá ver los resultados de la llamada, pero le dará información al respecto que podría ser útil):
[System.Diagnostics.Process]::Start("c:\windows\system32\ipconfig.exe")
Respuesta2
Intente ejecutar powershell -NoProfile
y ver si todo funciona. En ese caso. entonces tu problema es el script del perfil, con el que puedes editar notepad $profile
.
Intente abrir una ventana de CMD y ejecútela ipconfig
allí. Si funciona en CMD pero no en PowerShell, compare el entorno que se encuentra en cada uno. Probablemente, la forma más sencilla sea ejecutar set
en CMD y ejecutar cmd.exe /C set
en la ventana de PowerShell y comparar los resultados.
Respuesta3
Es un poco extraño ver su RUTA expresada en términos de otras variables de entorno. Me pregunto si eso podría estar haciendo que las cosas se vuelvan inestables.
Por ejemplo, esto es lo que esperaría ver en su variable PATH (suponiendo que C: sea su unidad de instalación principal):
PATH=C:\Windows\System32;C:\Windows;C:\Windows\System32\Wbem;