2012-02-16 17 views
6

Ho un file batch che avvia uno script PowerShell.Finestra PowerShell quando avviata da un file batch

file batch:

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

MyScript.ps1:

Write-Output "Hello World!" 

Funziona bene, con una sola eccezione. L'aspetto della finestra è simile al vecchio cmd.exe (sfondo nero) e non al PowerShell (sfondo blu).
Come posso ottenere la vera finestra di PowerShell, se la avvio da un file batch?

Grazie.

+2

Grazie tutti che hanno pubblicato finora. Non mi interessa se lo sfondo è blu o nero. Voglio sapere perché questo sta accadendo in primo luogo. Se si esegue questa operazione: Blocco note START , il Blocco note viene avviato normalmente e non vi è traccia di cmd.exe. Blocco note sembra esattamente lo stesso come se avessi iniziato da una scorciatoia. Perché è diverso con PowerShell? Perché è diverso se lo avvio da un file batch vs da una scorciatoia? E mi piace essere in grado di incollare con un clic destro nel nuovo PowerShell. Grazie. – mcu

+0

Inoltre, per impostazione predefinita, Prompt dei comandi mantiene solo 300 righe, mentre PowerShell mantiene MOLTE linee in più, quindi se stai usando qualcosa come 'start powershell -noexit -executionpolicy senza restrizione -file" PowerShell script.ps1 "' allora ne hai bisogno per aprire effettivamente in PowerShell, non Prompt dei comandi, in modo da poter visualizzare la cronologia completa dello script. – mythofechelon

risposta

6

Se si desidera uno sfondo blu, aggiungere codice nel proprio script per modificare il colore di sfondo.

#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. :) Bello (e veloce, anche). –

3

Questo è una proprietà del collegamento shell nel menu di avvio che inizia PowerShell, in modo che ci si dovrà passare attraverso che:

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

Non è abbastanza, dipende un po 'da dove che risiede (e potrebbe rompersi nelle versioni in lingua straniera).

+0

L'ho provato su XP e non funziona. Ho un guscio nero. 'start" "" C: \ Documents and Settings \ Tutti gli utenti \ Menu Start \ Programmi \ Accessori \ Windows PowerShell \ Windows PowerShell.lnk "'. Ho dovuto usare 'explorer.exe' per far rispettare le proprietà LNK. –

+0

Bene, sono su Windows 7 e ha funzionato qui. Ma questo è quello che stavo cercando di dirti - è un affare disordinato e probabilmente destinato a crollare (specialmente nei sistemi operativi legacy). – Joey

1

È possibile richiamare PowerShell in modo che esso si avvia con lo script

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