tags:

views:

70

answers:

2

I try to figure out whether my script is running in PowerShell.exe or in the ISE. If I am running in PowerShell.exe then I would like to change the size of the console window, but I don't want to impact the ISE, if I don't.

+1  A: 

You can look at the $Host variable. The name will be "ConsoleHost" in the console and "Windows Powershell ISE Host" in the ISE. Although this can probably be a little flaky to test because you're relying on user-readable strings.

Another way might be to look at $Host.UI.RawUI.BufferSize.Height which seems to be always 0 in the ISE. Something which isn't very common with a console window.

Joey
+2  A: 

$shellid also, however a better option would be to use the separate profiles for each host: Microsoft.PowerShell_Profile.ps1 and Microsoft.PowerShellISE_Profile.ps1. The respective files will run for the specific hosts. To run something in all hosts use the generic, Profile.ps1

Chad Miller
`$ShellId` yields "Microsoft.Powershell" in both the console and the ISE, at least here.
Joey
Hmm, I'm used to dealing with sqlps which is the SQL 2008 host. The shellid between those hosts is different The use of separate profiles is still a possible solution.
Chad Miller