script ejemplos ejecutar desde crear como comandos bat basicos automaticamente archivo abrir batch-file powershell powershell-v2.0

batch-file - ejemplos - powershell windows 10



Convierta la secuencia de comandos de PowerShell en formato no legible (2)

Puede convertir la secuencia de comandos en codificación Base64, de modo que no sea inmediatamente legible. Para convertir un archivo de script de PowerShell a una Cadena Base64, ejecute el siguiente comando:

$Base64 = [System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes(''c:/path/to/script file.ps1''));

Para iniciar la secuencia de comandos codificada en Base64, puede llamar a PowerShell.exe de la siguiente manera:

powershell.exe -EncodedCommand <Base64String>

Por ejemplo, el siguiente comando:

powershell.exe -EncodedCommand VwByAGkAdABlAC0ASABvAHMAdAAgAC0ATwBiAGoAZQBjAHQAIAAiAEgAZQBsAGwAbwAsACAAdwBvAHIAbABkACEAIgA7AA==

Devolverá los siguientes resultados:

Hello, world!

Tengo un script de PowerShell que instala un parche (contiene el conjunto de archivos que se agregarán) en una máquina del cliente. Para esto, he creado un archivo por lotes que ejecuta este script de PowerShell.
Para que el cliente ejecute este archivo por lotes, el archivo de script de PowerShell también debe colocarse en la máquina del cliente.

La secuencia de comandos de PowerShell está en formato de texto, que el cliente puede leer y comprender fácilmente.

¿Podemos convertir este archivo de script en algún formato no legible (por ejemplo, bin o exe), para que el cliente no lo pueda leer?


Intenté la solución propuesta por @TrevorSullivan, pero me dio error

The term ''????'' is not recognized as the name of a cmdlet, function, script file or operable program...

Como descubrí más tarde, hubo un problema con la codificación incorrecta. Encontré en otro lugar otro enfoque y cuando los combiné obtuve el comando PS:

$Base64 = [System.Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes([System.IO.File]::ReadAllText("script.ps1")))

Entonces puedo redirigir el resultado al archivo:

$Base64 > base64Script.txt

desde donde copio el comando codificado y lo <Base64String> aquí en lugar de <Base64String> :

powershell.exe -EncodedCommand <Base64String>

y funciona sin ningún problema.