Existe um problema com o F5 - ele não está realmente executando o script, é o ponto de origem dele. Eu criei a função + ligação de chave separada para andar por aí. É uma parte do projeto maior que eu usei no trabalho ( ISEFun no codeplex ). Versão mais curta (que salvará o script existente e converterá "untitled" em bloco de script):
$InvokeScript = {
if ($file = $psISE.CurrentFile) {
if (Test-Path $file.FullPath) {
if ($file.FullPath -match '\.ps1$') {
if (! $file.IsSaved) {
$file.Save()
}
# Script - we run it...
& $file.FullPath
}
} else {
& ([scriptblock]::Create($file.Editor.Text))
}
}
}
$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add(
"Invoke script",
$InvokeScript,
'F4'
)
A partir de agora você pode usar F4 em vez de F5 e manter sua sessão limpa. Para obtê-lo toda vez, você pode simplesmente adicioná-lo ao seu script $ profile.