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.
views:
70answers:
2
+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
2009-08-05 22:12:11
+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
2009-08-05 23:02:54
`$ShellId` yields "Microsoft.Powershell" in both the console and the ISE, at least here.
Joey
2009-08-05 23:05:59
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
2009-08-06 02:27:38