有没有办法检查脚本是否由PowerShell ISE运行?

pen*_*ake 19 .net powershell powershell-3.0

如果PowerShell脚本由Powersehll ISE运行,我想跳过Start-Transcript,Stop-Transcript行.

这可能吗?我怎样才能做到这一点?

CB.*_*CB. 21

你可以做:

if ($host.name -eq 'ConsoleHost') # or -notmatch 'ISE'
{
  .. do something .. 
}
else
{
  .. do something else..
}
Run Code Online (Sandbox Code Playgroud)


kuu*_*nbo 14

知道这是在不久前被问到的,已经标记为已回答,但还有一个方法:

function Test-IsISE {
# try...catch accounts for:
# Set-StrictMode -Version latest
    try {    
        return $psISE -ne $null;
    }
    catch {
        return $false;
    }
}
Run Code Online (Sandbox Code Playgroud)

ISE提供$ psISE:

http://technet.microsoft.com/en-us/library/dd819500.aspx


小智 5

这是一种在$psISE不产生异常的情况下寻找存在的方法:

if (Test-Path variable:global:psISE)
{
...
}
Run Code Online (Sandbox Code Playgroud)