Chamar funções do PowerShell em outros scripts

2

Eu tenho um script com várias funções (não apenas funções, mas também outro código). Eu gostaria de criar outro script que usa uma das funções no script principal. Aqui está uma amostra do que estou tentando fazer. No meu script test.ps1 :

function Test1 {Write-Host “This is test1”}
function Test2 {Write-Host “This is test2”}

Test1
Test2

E dentro do script testtest.ps1 :

. ".\test.ps1"
Test1

Quando executo test.ps1 , a saída é:

This is test1
This is test2

Quando executo testtest.ps1 , a saída é:

This is test1
This is test2
This is test1

Tudo o que quero fazer é chamar a função Test1 no meu script test.ps1 do meu script testtest.ps1 . Uma das minhas condições é que não alteremos o script test.ps1 (devido a problemas de permissão, leitura versus acesso à pasta de gravação) e não quero duplicar o código de script (é por isso que estou tentando reutilizar o código).

Não consigo encontrar a solução de que preciso, todos falam sobre o fornecimento de pontos com o PowerShell. Então, o ponto de origem é a maneira correta de fazer isso ou há alguma outra maneira de usar (apenas) uma função de outro script do PowerShell sem executar o código restante nesse script?

Obrigado

    
por STGdb 14.03.2014 / 15:03

1 resposta

2

Eu descobri uma maneira de fazer isso, então vou postá-lo caso isso ajude alguém. Concedido eu tive que editar o script PS original, mas as alterações feitas são insignificantes e não afetam o processamento primário do script em tudo.

Conteúdo do script test.ps1 :

Param ([int]$Local)

function Test1 {Write-Host “This is test1”}
function Test2 {Write-Host “This is test2”}

If ($Local -eq 1) {Exit}

Test1
Test2

Conteúdo do script testtest.ps1 :

. ".\test.ps1" -Local 1
Test1

Quando executo test.ps1 , recebo:

This is test1
This is test2

Mas agora (com as alterações feitas), quando executo testtest.ps1 , recebo:

This is test1

Dessa forma, o script carregou as funções do test.ps1 na memória (para que possam ser usadas), mas não processa nenhuma parte do restante do script (porque nós Exit). Agora posso usar as funções localizadas neste script, se quiser, sem afetar o processamento do script de origem original.

Obrigado a todos pelo feedback !!

    
por 18.03.2014 / 19:29