¿Alguna forma de concatenar comandos en Powershell para Linux?
Esto es lo que estoy tratando de ejecutar:
pwsh -Command Invoke-ScriptAnalyzer -Path . | ConvertTo-Json | Out-File -FilePath "/home/administrator/scripts/test.json"
Por lo tanto, ejecute Invoke-ScriptAnalyzer, convierta los resultados a Json y guarde el resultado en test.json.
No reconoce nada después de | señal:
./test.sh: line 1: ConvertTo-Json: command not found
./test.sh: line 1: Out-File: command not found
Necesito que esto vaya en un script bash, de ahí la necesidad de iniciar pwsh con la opción -Command.
¿Algunas ideas?
Gracias
Como está escrito, su | los símbolos son interpretados por su shell de Linux (como bash ), no por PowerShell.
Hay dos soluciones:
-Command (una cadena '...' en un shell compatible con POSIX, como bash , usa el contenido de la cadena palabra por palabra ): pwsh -Command 'Invoke-ScriptAnalyzer -Path . | ConvertTo-Json | Out-File -FilePath "/home/administrator/scripts/test.json"'\ -escape todos los metacaracteres del shell de Linux que desea pasar textualmente, como \| y \" en este caso: pwsh -Command Invoke-ScriptAnalyzer -Path . \| ConvertTo-Json \| Out-File -FilePath \"/home/administrator/scripts/test.json\" Nota: En este caso, pwsh recibe varios argumentos después de -Command . Sin embargo, PowerShell simplemente los une antes de interpretar el resultado como código de PowerShell.
Esto difiere del procesamiento de la línea de comandos de los shells compatibles con POSIX, que interpretan el primer argumento post- -c como un script ad-hoc implícito, con argumentos adicionales que se pasan como argumentos textuales a ese script , accesible como de costumbre como $1 , ...