Domanda

Spero di chiamare una funzione all'interno di una funzione in Invoke-Command.Sembra che non lo stia facendo correttamente.Ricevo "Get-Group_USers" non è un errore riconosciuto.Tutto è in uno script PS1.

Script troncato:

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)
.

Allora, ho lasciato la funzione get-groups_users.Posso pubblicarlo se qualcuno pensa che aiuterà a spiegare tutto.È lungo.Inoltre sto lasciando fuori le definizioni $xmlwriter.

get-groups_users funziona quando viene eseguito su Comp1, ma una volta entrato PSSession e prova a utilizzarlo in Avvoke-comando per la sub comps, non lo riconosce.

Cosa sto dimenticando?

È stato utile?

Soluzione

È necessario includere la definizione della funzione get-groups_users all'interno del parametro -ScriptBlock quando si chiama Invoke-Command.Se non lo fai, la sessione remota non ha alcuna conoscenza della funzione get-groups_users.

Ecco come risolvere questo:

$ScriptBlock = {
    function get-groups_users {
         ############ Put your function's code here ############
    }
    (get-groups_users -ComputerName $ComputerName)
};
Invoke-Command -Session $session -ScriptBlock $ScriptBlock -ArgumentList $ComputerName
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top