Pergunta

Espero chamar uma função dentro de uma função no comando de invocação.Parece que não estou fazendo isso corretamente.Recebo o erro "get-group_users" não é reconhecido.Tudo está em um script ps1.

Script truncado:

function get-session {
$session = New-PSSession -ComputerName $ip -Credential $cred -Auth CredSSP
$ComputerName = $cred.Replace('\Admin',"")
$csv = "C:\Scripts\Serverlists\" + $ComputerName + ".txt"
$subcomps = import-csv $csv | foreach-object {$_.Name}

foreach ($ComputerName in $subcomps)
{
$ComputerName
$xmlWriter.WriteStartElement("Computer",$ComputerName)

Invoke-Command -Session $session -ScriptBlock { (get-groups_users -ComputerName $ComputerName) } -ArgumentList $ComputerName

$xmlWriter.WriteEndElement()
}
Remove-PSSession -ComputerName $ip
}



$ip = '172.16.24.11'
$ComputerName = "COMP1"
$user = '\Admin'
$cred = $ComputerName + $user

(get-groups_users -ComputerName $ComputerName)
(get-session -Credential $cred -ComputerName $ip)

Então, estou deixando de fora o get-groups_users função.Posso postar se alguém achar que vai ajudar a explicar tudo.É longo.Também estou deixando de fora o $xmlwriter definições.

get-groups_users funciona quando é executado em COMP1, mas quando eu entro PSSession e tente usá-lo no comando de invocação para as subcomposições que ele não reconhece.

O que estou esquecendo?

Foi útil?

Solução

Você tem que incluir o get-groups_users definição de função dentro do -ScriptBlock parâmetro quando você chama Invoke-Command.Caso contrário, a sessão remota não terá conhecimento do get-groups_users função.

Veja como consertar isso:

$ScriptBlock = {
    function get-groups_users {
         ############ Put your function's code here ############
    }
    (get-groups_users -ComputerName $ComputerName)
};
Invoke-Command -Session $session -ScriptBlock $ScriptBlock -ArgumentList $ComputerName
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top