Zum Inhalt wechseln


Foto

Powershell invoke-command eine Funktion aufrufen


  • Bitte melde dich an um zu Antworten
6 Antworten in diesem Thema

#1 speer

speer

    Junior Member

  • 138 Beiträge

 

Geschrieben 13. Januar 2017 - 09:30

Hallo zusammen,

ich möchte auf mehreren Terminalservern diverse Punkte prüfen.

Der Übersichtlichkeitshalber und spätere Verwendbarkeit verwende ich viele Funktionen. Mein Problem hänge nun im Zusammenhang mit invoke-command und Aufruf der Funktion zusammen.

Meine Funktion ist fKopiereDateien, beim Aufruf erscheint folgende Fehlermeldung:

 

 

Die Benennung "fKopiereDateien" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die

Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.

+ CategoryInfo : ObjectNotFound: (fKopiereDateien:String) [], CommandNotFoundException

+ FullyQualifiedErrorId : CommandNotFoundException

+ PSComputerName : TSSAP01

Invoke-Command -ComputerName $serverArray -scriptblock {
		if (... ) { fKopiereDateien($Using:Quelle, $Using:Ziel) }























Hat mir jemand einen Tip? Der Funktionsaufruf außerhalb funktioniert tadellos.



#2 NilsK

NilsK

    Expert Member

  • 11.653 Beiträge

 

Geschrieben 13. Januar 2017 - 10:14

Moin,

 

da Invoke-Command per PSRemoting ein Kommando auf dem entfernten Server ausführt, muss die Funktion dort erreichbar sein. Du musst sie also auf dem entfernten Server oder auf einem Dateiserver ablegen und dann mit ihrem Pfad aufrufen, damit sie verfügbar wird.

 

Gruß, Nils


Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#3 speer

speer

    Junior Member

  • 138 Beiträge

 

Geschrieben 13. Januar 2017 - 10:27

Hallo Nils,

klingt einleuchtend. Danke für den Hinweis.



#4 MurdocX

MurdocX

    Member

  • 302 Beiträge

 

Geschrieben 13. Januar 2017 - 14:03

Du könntest sie aber mit übergeben. Einfach oben in den ScriptBlock mit einfügen, dann sind sie auf dem Remotesystem auch verfügbar. 


Mit freundlicher Unterstützung
Jan


#5 Dukel

Dukel

    Board Veteran

  • 9.011 Beiträge

 

Geschrieben 13. Januar 2017 - 14:09

Oder die Funktion (und das Script) in eine Datei auslagern und statt den Scriptblock die Datei angeben.


Stop making stupid people famous.


#6 MurdocX

MurdocX

    Member

  • 302 Beiträge

 

Geschrieben 13. Januar 2017 - 14:11

Oder die Funktion (und das Script) in eine Datei auslagern und statt den Scriptblock die Datei angeben.

 

Dann aber auf die RemoteExecution-Policy achten, falls diese Datei im Netzwerk auf einem Share liegt ;-)


Mit freundlicher Unterstützung
Jan


#7 Dukel

Dukel

    Board Veteran

  • 9.011 Beiträge

 

Geschrieben 13. Januar 2017 - 14:15

Diese wird dann mit dem invoke-command auf den anderen Rechner kopiert.


Stop making stupid people famous.