Obteniendo un error al ejecutar un script de PowerShell desde PowerShell.
Estoy obteniendo el siguiente error al ejecutar el siguiente código:
Código:
$localScriptPath= “C:\AshishG\powershell\script12.ps1”
$ëncodedResonse = “77u/V3JpdGUtSG9zdCAnc2NyaXB0IGlzIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseScNCg0KcmV0dXJuICdUaGlzIGlzIHNjcmlwdCBvdXRwdXQn”
Write-Output “ëncodedResonse used is $ëncodedResonse”
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($ëncodedResonse)) | Out-File $localScriptPath -Force
$Content2 = get-content $localScriptPath
Write-Host “DECODED: ” $Content2
$output =Invoke-Expression “"$localScriptPath
“”
Write-Host “scriptPath” used is $output
Explicación del código:
1. Asigna la ruta del script a una variable.
2. Asigna la cadena codificada a una variable.
3. Decodifica la cadena y la copia en un archivo.
4. Ejecuta el script PowerShell y obtiene el error.
Error:
Write-Host : El término ‘Write-Host’ no se reconoce como el nombre de un cmdlet, función, archivo de script o programa operable. Comprueba la ortografía del
nombre o, si se incluyó una ruta de acceso, comprueba que la ruta de acceso es correcta e inténtalo de nuevo.
En C:\AshishG\powershell\script12.ps1:1 caracter:1
+ Write-Host ‘script is executed successfully’
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Write-Host:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Por favor, vea los siguientes puntos.
1. Estoy obteniendo el error al ejecutar el script de PowerShell (C:\AshishG\powershell\script12.ps1).
2. La cadena está en formato codificado y puedo decodificarla y veo que la cadena decodificada también es correcta.
3. Observo que el script12.ps1 está generado en formato UTF-16 LE BOM. ¿Está generando el problema?
He escrito el código completo porque no estoy seguro cuál es el problema.
davy.ai
Parece que el problema está en el uso del comando ‘Write-Host’ en el script que se está llamando ($localScriptPath). ‘Write-Host’ no es reconocido como un cmdlet en algunas versiones de PowerShell, incluyendo PowerShell Core 6.0 y superiores.
Para solucionar esto, puedes reemplazar ‘Write-Host’ por ‘Write-Output’ en el script que se está llamando.
Además, es posible que el formato UTF-16 LE BOM del script generado ($localScriptPath) esté causando problemas. Puedes intentar cambiar la codificación del script generado a UTF-8 sin BOM utilizando el cmdlet ‘Set-Content’ en lugar de ‘Out-File’ en la línea 4.
Código con los cambios sugeridos: