2012-02-16 13 views
6

Tengo un archivo de proceso por lotes que inicia un script de PowerShell.Ventana de PowerShell cuando se inició desde un archivo por lotes

archivo por lotes:

START Powershell -executionpolicy RemoteSigned -noexit -file "MyScript.ps1" 

MyScript.ps1:

Write-Output "Hello World!" 

Trabaja muy bien, con una excepción. La apariencia de la ventana es como el antiguo cmd.exe (fondo negro) y no el PowerShell (fondo azul).
¿Cómo puedo obtener la ventana verdadera de PowerShell si la inicio desde un archivo por lotes?

Gracias.

+2

Gracias a todos los que se han publicado hasta el momento. Realmente no me importa si el fondo es azul o negro. Quiero saber por qué está sucediendo esto en primer lugar. Si hago esto: START notepad entonces el Bloc de notas comienza normalmente y no hay rastro de cmd.exe alrededor. El Bloc de notas se ve exactamente igual que si lo comenzara desde un atajo. ¿Por qué es diferente con PowerShell? ¿Por qué es diferente si lo comienzo desde un archivo por lotes frente a un acceso directo? Y me gusta poder pegar con un clic derecho en la nueva PowerShell. Gracias. – mcu

+0

Además, de manera predeterminada, el símbolo del sistema solo retiene 300 líneas, mientras que PowerShell conserva MUCHAS más líneas, por lo que si está utilizando algo como 'start powershell -noexit -executionpolicy unrestricted -file" PowerShell script.ps1 "', entonces necesita que se abra realmente en PowerShell, no en Símbolo del sistema, para que pueda ver el historial completo de la secuencia de comandos. – mythofechelon

Respuesta

6

Si realmente desea un fondo azul, en su secuencia de comandos, agregue código para cambiar el color de fondo.

#save the original 
$original=$host.ui.RawUI.BackgroundColor 
$front=$host.ui.RawUI.ForegroundColor 
$host.ui.RawUI.BackgroundColor="DarkBlue" 
$host.ui.RawUI.ForegroundColor="White" 
cls 
#run your code 
dir c:\scripts 

#set it back 
$host.ui.RawUI.BackgroundColor=$original 
$host.ui.RawUI.ForegroundColor=$front 
+0

+1. :) Agradable (y rápido, también). –

3

Eso es una propiedad del enlace de la cáscara en el menú de inicio que inicia PowerShell, por lo que tendría que pasar por eso:

start "" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories\Windows PowerShell\Windows PowerShell.lnk" ... 

no es bonito, depende un poco en donde que reside (y podría romperse en versiones en idiomas extranjeros).

+0

Lo probé en XP y no funcionaba. Tengo un caparazón negro. 'start" "" C: \ Documents and Settings \ All Users \ Menú de Inicio \ Programas \ Accesorios \ Windows PowerShell \ Windows PowerShell.lnk "'. Tuve que usar 'explorer.exe' para cumplir con las propiedades de LNK. –

+0

Bueno, estoy en Windows 7 y funcionó aquí. Pero eso es lo que estaba tratando de decirte: es un asunto complicado y es probable que se rompa (especialmente en sistemas operativos heredados). – Joey

1

Puede invocar PowerShell para que se inicie en sí con el guión

Powershell.exe -Command "& {Start-Process PowerShell.exe -ArgumentList '-ExecutionPolicy RemoteSigned -noexit -File ""Full_Path_of_MyScript.ps1""'}" 
Cuestiones relacionadas