Ответ 1
Вы можете сделать:
if ($host.name -eq 'ConsoleHost') # or -notmatch 'ISE'
{
.. do something ..
}
else
{
.. do something else..
}
Я хочу пропустить строки Start-Transcript, Stop-Transcript, если PowerShell script работает от Powersehll ISE.
Возможно ли это? И как я могу достичь этого?
Вы можете сделать:
if ($host.name -eq 'ConsoleHost') # or -notmatch 'ISE'
{
.. do something ..
}
else
{
.. do something else..
}
Знайте, что это было задано довольно давно и уже отмечено как ответ, но еще один способ:
function Test-IsISE {
# try...catch accounts for:
# Set-StrictMode -Version latest
try {
return $psISE -ne $null;
}
catch {
return $false;
}
}
$psISE доступно в ISE:
Другая альтернатива...
Try {
Start-Transcript -Path <somepath> | Out-Null
}
Catch [System.Management.Automation.PSNotSupportedException] {
# The current PowerShell Host doesn't support transcribing
}
Здесь метод, который ищет существование $psISE
без генерации исключений:
if (Test-Path variable:global:psISE)
{
...
}