Есть ли способ проверить, работает ли script с помощью PowerShell ISE?

Я хочу пропустить строки Start-Transcript, Stop-Transcript, если PowerShell script работает от Powersehll ISE.

Возможно ли это? И как я могу достичь этого?

Ответы

Ответ 1

Вы можете сделать:

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

Ответ 2

Знайте, что это было задано довольно давно и уже отмечено как ответ, но еще один способ:

function Test-IsISE {
# try...catch accounts for:
# Set-StrictMode -Version latest
    try {    
        return $psISE -ne $null;
    }
    catch {
        return $false;
    }
}

$psISE доступно в ISE:

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

Ответ 3

Другая альтернатива...

Try {
    Start-Transcript -Path <somepath> | Out-Null
}

Catch [System.Management.Automation.PSNotSupportedException] {
    # The current PowerShell Host doesn't support transcribing
}

Ответ 4

Здесь метод, который ищет существование $psISE без генерации исключений:

if (Test-Path variable:global:psISE)
{
...
}