Como posso limpar automaticamente as variáveis do escopo do script no PowerShell ISE?

2

Ao trabalhar em um console normal do PowerShell, as variáveis criadas em um script serão automaticamente limpas quando o script terminar, a menos que sejam elevadas para um escopo maior. No entanto, isso parece não ser o caso dentro do console no PowerShell ISE. Depois de executar um script, suas variáveis persistem mesmo que elas devam, por padrão, estar confinadas ao escopo do script.

Até agora, a única maneira de limpar isso que eu vi é adicionar um monte de rv linhas no final dos meus scripts, o que será desnecessário quando o script for executado normalmente no PowerShell. Eu também tenho que lembrar de executar rv sempre que eu executar um trecho do script, a menos que eu realmente queira que as variáveis persistam por mais tempo na sessão.

Existe alguma maneira de configurar o PowerShell ISE para funcionar mais como um console real do PowerShell a esse respeito?

    
por Iszi 13.08.2013 / 05:15

1 resposta

2

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.

    
por 13.08.2013 / 10:21

Tags