Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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 - Was kann die ISE, was die normale Shell nicht kann? (Thema Funktionen)

Frage Entwicklung Batch & Shell

Mitglied: Scriptex

Scriptex (Level 1) - Jetzt verbinden

26.04.2012, aktualisiert 11:03 Uhr, 4547 Aufrufe, 4 Kommentare

Warum läuft mein Skript in der ISE, aber nicht wenn ich es ausführe?

Hallo,

ich habe ein fertiges Skript mit Funktionen geschrieben. Das Skript ruft eine GUI mit mehreren Feldern zum Anklicken auf und arbeitet im lokalen Dateiverzeichnis. Das vorangegangene Problem ist in meinem vorigen Thread hier näher erläutert. Nun habe ich nicht mehr das Problem, dass die Shell nichts tut, denn sie tut etwas, nur leider nicht das gewünschte. Problem: Führe ich das Skript in der ISE aus, klappt alles wunderbar. Klicke ich rechts auf das Skript im Verzeichnis, und wähle "Ausführen", erscheint die GUI nicht als Extra-Fenster (so wie es sein soll), sondern sie erscheint quasi in der Shell und ich kann nichts anklicken - logisch.

Warum ist das so?

Einen Syntax-Fehler schließe ich eigentlich vollkommen aus, da es in der ISE ohne Probleme läuft. Was hat also die ISE, was die Standard Shell nicht hat? Was ich bisher versucht habe:
  • Ausführen als Administrator
  • den Funktionsbereich der Funktion anzugeben (Function global: Funktionsname)
  • die Funktionen (sind ja so gesehen eigens gebaute cmdlets) zu meinem Profil hinzuzufügen
  • die Richtlinien zum Ausführen von Skripts zu überprüfen und in der Registry auf 'Unrestricted' zu setzen
  • das Skript in verschiedenen Dateitypen zu speichern und dann auszuführen
  • die implentierten Funktionen zu separieren (einzelne neue Skripts) und manuell einzubinden

Bisher hat nichts geholfen. Wenn jemand etwas darüber weiß, was die ISE alles hat und kann, würde das ein bisschen Licht ins Dunkel bringen.

Gruß Scriptex
Mitglied: Connor1980
26.04.2012 um 11:23 Uhr
Hi Scriptex,

das ist mir so noch nicht untergekommen, auf Anhieb fällt mir auch nix dazu ein. Allerdings habe ich noch keine GUI damit gebaut, lediglich höchstens Rückmeldung produziert. Evtl. magst du dein script mal posten, damit jemand/wir es nachstellen kann/können?

Grüße
Bitte warten ..
Mitglied: Scriptex
26.04.2012 um 11:41 Uhr
Das Skript ist 217 Zeilen lang, ich poste mal den Teil, der für die GUI zuständig ist. Den geposteten Code habe ich so auch nochmal in ein neues Skript zu Testzwecken gespeichert und ausgeführt - wieder geht in der ISE alles, beim normalen Ausführen erscheint der Text aber in der Shell selbst...

01.
Function Select-File 
02.
03.
    Param([String[]]$choiceList,[int]$default=0) 
04.
    $choicedesc = New-Object System.Collections.ObjectModel.Collection[System.Management.Automation.Host.ChoiceDescription] 
05.
    $choiceList | foreach  { $choicedesc.Add((New-Object "System.Management.Automation.Host.ChoiceDescription" -ArgumentList $_))} 
06.
    $Caption="Beispielüberschrift" 
07.
    $Message="Beispieltext" 
08.
    $Host.ui.PromptForChoice($caption, $message, $choicedesc, $default) 
09.
    }       
10.
     
11.
    Switch (Select-File -choice "1.Datei","2.Datei","Speicherort","Ausführen","Abbrechen") 
12.
13.
                0 {$path_dat1 = Select-FileDialog -Title "Auswahl der alten Datei"} 
14.
                1 {$path_dat2 = Select-FileDialog -Title "Auswahl der neuen Datei"} 
15.
                2 {$result = Save-File} 
16.
                3 {$Warnung = new-object -comobject wscript.shell 
17.
                   $Warnung.popup("Bitte wählen Sie erst die Dateien sowie das Speicherverzeichnis aus!",0,"Beispielüberschrift")} 
18.
                4 {#hier passiert nix#} 
19.
                }
Anmerkung: Bei dem Klick auf die Felder 1.Datei(0), 2.Datei(1) und Speicherort(2) wird entweder Select-FileDialog oder Save-File ausgelöst. Das sind weitere Funktionen von mir, die entweder das 'Datei-Öffnen-Fenster' oder das 'Datei-Speichern-Fenster' ausgeben. Der vom User per Klick ausgewählte Dateipfad wird dann in der Variable gespeichert.

So gesehen sind die beiden Auswahl-Fenster ja auch GUIs - aber die GUI, die zuerst erscheint und auch nicht verschwindet, ist die 'Select-File-GUI'. Und wenn ich in der nichts anklicken kann, komme ich ja auch gar nicht weiter.
Bitte warten ..
Mitglied: mak-xxl
26.04.2012 um 13:05 Uhr
Moin Scriptex,

das hier hat mir mal geholfen.

Freundliche Grüße von der Insel
Bitte warten ..
Mitglied: Scriptex
26.04.2012 um 13:14 Uhr
Danke, ich war allerdings auch schon auf der Seite und habe nach dem Code mein 'Datei-Öffnen-Fenster' gebaut.

Wenn ich den Code aus dem Link 1:1 übernehme, und das vorgegebene Beispiel in das Skript schreibe, bekomme ich leider den Standardfehler "Die Benennung Select-FileDailog wurde nicht als Name eines cmdlet, einer Funktion, einer Skriptdatei oder eines anderen Programms erkannt. Überprüfen Sie die Schreibweise... etc."

Sehr schade, aber wie gesagt gehe ich nicht von einem syntaktischen Fehler aus, sondern von irgendeiner Grundeinstellung, die die ISE besitzt und die in der Standard Shell fehlt.
Bitte warten ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Ähnliche Inhalte
Batch & Shell
gelöst PDF-Stapelverarbeitung mit PDFTK (in batch, shell, powershell) (3)

Frage von brause1701 zum Thema Batch & Shell ...

Batch & Shell
gelöst PowerShell Script Move-Item nach x Tagen (5)

Frage von lupolo zum Thema Batch & Shell ...

Batch & Shell
gelöst Crontab mit Shell Probleme (9)

Frage von mschaedler1982 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...