Powershell Remoting: Executa a função local em dois servidores de destino

1

Eu tenho uma função foo na minha máquina local. (No meu perfil, mas chamando c: \ scripts \ foo.ps1 seria também OK!) Como faço para carregar isso no ServerA e ServerB para que eu possa executar a função na próxima declaração?

Isso é o que eu tentei sem sucesso ..

$serverlist = 
"192.168.20.1",
"192.168.20.12"  
foreach ($item in $serverlist) {
    New-PSSession -ComputerName "$item" -Credential $cred -Name  ($item + "_session")
    Invoke-Command -ComputerName $item -Credential $cred -filepath scripts:\foo.ps1 
    Invoke-Command -ComputerName $item -Credential $cred -scriptblock {foo}  
}
    
por icnivad 22.03.2010 / 14:52

1 resposta

1

Dois erros aqui:

  1. Primeiro, Invoke-Command pode usar o parâmetro -ComputerName ou o parâmetro -Session . Você está criando uma sessão aqui, mas não está usando, portanto, os comandos executados são executados em sessões diferentes e não sabem nada um do outro.

  2. -ComputerName recebe um string[] para que você possa descartar o foreach . Você pode, então, apenas colocar a definição da função e a chamada em um único bloco de script.

por 22.03.2010 / 17:16