Pregunta

Espero llamar a una función dentro de una función en invoke-command.Parece que no estoy haciendo esto correctamente.Recibo el error "get-group_users" no reconocido.Todo está en un script de ps1.

Guión 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)

Entonces, estoy dejando de lado el get-groups_users función.Puedo publicarlo si alguien cree que ayudará a explicar todo.Es largo.También estoy dejando de lado el $xmlwriter definiciones.

get-groups_users funciona cuando se ejecuta en COMP1, pero una vez que entro PSSession e intente usarlo en el comando de invocación para las subcomposiciones, no lo reconoce.

¿Qué me estoy olvidando?

¿Fue útil?

Solución

Tienes que incluir el get-groups_users definición de función dentro del -ScriptBlock parámetro cuando llamas Invoke-Command.Si no lo hace, la sesión remota no tendrá conocimiento del get-groups_users función.

Aquí se explica cómo solucionarlo:

$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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top