Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PowerShell - Arbeiten mit unterschiedlichen Funktionen innerhalb eines Skripts

Frage Entwicklung Batch & Shell

Mitglied: Scriptex

Scriptex (Level 1) - Jetzt verbinden

18.04.2012, aktualisiert 10:02 Uhr, 4277 Aufrufe, 1 Kommentar

Wie binde ich verschiedene Funktionen richtig in ein einziges Skript ein?

Hallo zusammen!

Ich habe ein Skript, in dem der User zwei Dateien auswählen (öffnen), einen Speicherort bestimmen und etwas bestätigen/auswählen soll. Diese Aufgaben würde ich gern Anwender-freundlich mit ein paar GUIs lösen. Der Benutzer wählt und klickt, das Skript läuft im Hintergrund ab.


Die GUIs sollen dabei durch Funktionen aufgerufen werden. Da ich sowohl ein "Datei öffnen"-Fenster, ein "Speichern unter"-Fenster und eine Sicherheitsabfrage in dem Skript nutzen will, muss ich verschiedene Funktionen nutzen.
Nun zum Problem:

Führe ich das Skript in der ISE aus, läuft alles einwandfrei ab; die Fenster öffnen sich. Starte ich das Skript mit der normalen Powershell per Klick (also so, wie es im Endeffekt auch geschehen wird) geht bloß das Shellfenster auf, der Cursor blinkt. Wie ich herausgefunden habe, liegt das Problem scheinbar beim Aufurf der Funktion durch Select-FileDialog. Die Codes sehen so aus:

Einbindung der Funktion
01.
Function Select-FileDialog 
02.
03.
	param([string]$Title) 
04.
	[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null 
05.
	$objForm = New-Object System.Windows.Forms.OpenFileDialog 
06.
	$objForm.InitialDirectory = "C:\" 
07.
	$objForm.Filter = "TXT-Dateien (*.txt)|*.txt" 
08.
	$objForm.Title = $Title 
09.
	$objForm.ShowDialog() 
10.
}
Aufruf
01.
$path_txt1 = Select-FileDialog -Title "Auswahl Datei"       
Da in meinem Skript der Code so untereinander steht, bin ich zuerst davon ausgegangen, die Funktion wird nicht/falsch eingebunden und der Aufruf erfolgt zu früh, währen die Funktion noch definiert wird. Daher habe ich die Funktion in ein separates Skript geschrieben und wollte dieses Skript durch dot-sourcing in das Haupt-Skript einbinden. In der ISE funktionierte wieder alles wunderbar, das normale Ausführen zeigte mir allerdings wieder nur das Shell-Fenster, als wenn es ewig laden/bearbeiten würde. Ich habe dann die Funktion händisch in die normale Shell eingegeben, um sie dort zu definieren. Der Aufruf der Funktion schlug danach aber immer noch fehl. Auch habe ich schon versucht, den Funktionsbereich der Funktion durch andere Weg auf global zu setzen, etwa durch das Präfix global: vor dem Funktionsname in der Funktion (stand so als Tipp bei den Scripting Guys).

Es hat jedenfalls bisher nichts geholfen; in der ISE funktioniert alles, die normale Ausführung scheitert. Als letzten Versuch habe ich die Funktion in einem Skript definiert, ein zweites Skript bestand nur aus dem Aufruf. Ich habe dann das Funktions-Skript normal (per Klick) ausgeführt, um die Funktion zu definieren. Die PowerShell öffnete sich kurz, schloß sich ohne Fehlermeldung. Bei der anschließenden Ausführung des zweiten Skripts bekomme ich den Fehler, Select-FileDialog sei nicht als Name einer Funktion, eines cmdlets, etc. gefunden worden. Warum wurde die Funktion also scheinbar nicht richtig eingebunden??

Vom dot-sourcing (also dem Auslagern der Funktion auf ein separates Skript) würde ich gern absehen, da ich, wie oben gesagt, mehrere verschiedene Funktionen nutze. In dem Fall würde ich dann zwei Skripts oder mehr benötigen, was ich der Einfachheit wegen vermeiden möchte. Es muss doch irgendwie möglich sein, mit Funktionen in Skripts zu arbeiten - ohne alles händisch vorher zu deklarieren oder für ein simples Vorhaben fünf Skripts zu benötigen. Was fehlt mir da?

Ich hoffe Ihr könnt mit den Informationen etwas anfangen.
Gruß Scriptex
Mitglied: Scriptex
24.04.2012 um 11:52 Uhr
Da mir scheinbar niemand helfen kann, setze ich den Haken jetzt mal auf grün und probiere es (wo)anders.
Bitte warten ..
Ähnliche Inhalte
Entwicklung
Powershell: Timer-Funktion und Progressbar-Funktion
gelöst Frage von SaschaRDEntwicklung8 Kommentare

Hallo zusammen, ich benötige bei 2 Funktionen in Powershell etwas Unterstützung: Fall-1: Ich habe eine Timer-Funktion die eine Anzahl(X) ...

Batch & Shell
Powershell: Parameter einer Funktion soll eine Funktion aufrufen
gelöst Frage von SaschaRDBatch & Shell3 Kommentare

Hallo zusammen, mein Ziel ist es die Zeitdauer einer Prozesses zu ermitteln. Dafür ist die folgende Funktion zuständig:Leider wird ...

Batch & Shell
Powershell Funktion Ausgabe in Datei
gelöst Frage von schicksalBatch & Shell2 Kommentare

Hallo alle zusammen, Ich habe hier ein kleines Script, dessen Ausgabe würde ich gerne in eine Logdatei speichern. Ich ...

Entwicklung
Powershell Funktion Pipeline oder nicht
gelöst Frage von H41mSh1C0REntwicklung12 Kommentare

Hi@All, ich steh grad vor der Entscheidung ob pipeline oder nicht. Momentan führe ich Scripte immer Blockweise aus den ...

Neue Wissensbeiträge
Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 41 MinutenInternet

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registierunf von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 7 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 18 StundenWindows 103 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 20 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...