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 Aufgabenplanung: Powershell script interactive

Mitglied: potshock

potshock (Level 1) - Jetzt verbinden

09.02.2019, aktualisiert 11:37 Uhr, 244 Aufrufe, 4 Kommentare

Guten Morgen,

ich automatisiere gerade ein paar Aufgaben via Powershell Scripte und Aufgabenplanung auf einem Windows Server 2012 R2.
Dabei bin ich auf zwei Probleme gestossen:

1.) ich habe ein Script "SichernExtern.ps1" welches in der Powershell ISE funktioniert.
In dem Script wird per [System.Windows.Forms.MessageBox] dazu aufgefordert die externe USB-HDD anzuschliessen.
Per Aufgabenplanung wird das Script jedoch nicht ausgeführt, es poppt kurz das PS-Fenster auf und wird sofort geschlossen.
Ich habe die PS Option -nointeractive gefunden, dachte dem entsprechen ist -interactive die Lösung.
Ich habe in der Aufgabenplanung bei Aktionen -> Argumente hinzufügen u.a. folgendes versucht: -interactive -command"PfadZumScript"
Wer kann helfen?

Hier mal ein Auszug aus meinem Script:

01.
$Medium = '\\Zocker\Z_CNMEMORY'
02.
#Aufforderung das externe Sicherungmedium anzuschließen
03.
$Result = [System.Windows.Forms.MessageBox]::Show("Bitte externes Sicherungmedium anschließen!`r`n`r`nDie Sicherung dauert ...  ;_)!`r`n`r`nMuss sein!","Achtung: Aufforderung!",1,[System.Windows.Forms.MessageBoxIcon]::Exclamation)
04.
If ($Result -eq "OK") {
05.
    #Pfad zum externen Medium wird geprüft
06.
    if (Test-Path $Medium) {
07.
    #Hier wird die vorher weiter oben definierte function m. dem Namen Aktion ausgeführt!
08.
    Aktion
09.
    }
10.
    else
11.
    {
12.
    $Fehler =  [System.Windows.Forms.MessageBox]::Show("Sicherungsmedium nicht gefunden... :-(!","ERROR",1,[System.Windows.Forms.MessageBoxIcon]::Error)
13.
    }
14.
}
15.
else {
16.
$Result1 =  [System.Windows.Forms.MessageBox]::Show("Ist nicht dein Ernst ... ;-)!`r`n`r`nMuss sein!","ERROR",1,[System.Windows.Forms.MessageBoxIcon]::Error)
17.
   If ($Result1 -eq "OK") {
18.
    #Pfad zum externen Medium wird geprüft
19.
    if (Test-Path $Medium) {
20.
    #Hier wird die vorher weiter oben definierte function m. dem Namen Aktion ausgeführt!
21.
    Aktion
22.
    }
23.
    else
24.
    {
25.
    $Fehler =  [System.Windows.Forms.MessageBox]::Show("Sicherungsmedium nicht gefunden... :-(!","ERROR",1,[System.Windows.Forms.MessageBoxIcon]::Error)
26.
    }
27.
}
28.
}

2.) Desweiteren habe ich noch ein anderes kleines, eher kosmetisches Problem:
Andere Scripte sollen Hidden laufen, dies habe ich bei Aktionen -> Argumente hinzufügen: -WindowsStyle Hidden -command"PfadZumScript" errreicht.
Allerdings poppt hier auch kurz jeweils ein PS-Fenster auf.
Meine Recherche hat ergeben, das ich dagegen nichts tun kann, könnt Ihr das bestätigen, oder gibt es dafür doch eine Lösung?

Wünsche Euch ein schönes Wochenende
Potshock
Mitglied: colinardo
LÖSUNG 09.02.2019, aktualisiert um 12:10 Uhr
Servus Potshock .
Zitat von potshock:
1.) ich habe ein Script "SichernExtern.ps1" welches in der Powershell ISE funktioniert.
In dem Script wird per [System.Windows.Forms.MessageBox] dazu aufgefordert die externe USB-HDD anzuschliessen.
Per Aufgabenplanung wird das Script jedoch nicht ausgeführt, es poppt kurz das PS-Fenster auf und wird sofort geschlossen.
Ich habe die PS Option -nointeractive gefunden, dachte dem entsprechen ist -interactive die Lösung.
Ich habe in der Aufgabenplanung bei Aktionen -> Argumente hinzufügen u.a. folgendes versucht: -interactive -command"PfadZumScript"
Wer kann helfen?
  1. Den Parameter -interactive gibt es nicht und deshalb ein Fehler!
  2. Muss damit Eingaben aus der Aufgabenplanung dem User auf in der Konsole-Session präsentiert werden können dieser im Kontext des Users laufen, im Task also die Option screenshot - Klicke auf das Bild, um es zu vergrößern gesetzt sein.
  3. Damit du Messageboxes in deinem Skript nutzen kannst musst du den Namespace System.Windows.Forms auch erst importieren den du hier nutzt, damit du ihn verwenden kannst. In der ISE ist dieser per Default schon importiert deswegen geht es in der ISE, aber eben nicht wenn es nicht in der ISE läuft.
Hiermit importierst du das nötigen Assembly
01.
Add-Type -A System.Windows.Forms

2.) Desweiteren habe ich noch ein anderes kleines, eher kosmetisches Problem:
Andere Scripte sollen Hidden laufen, dies habe ich bei Aktionen -> Argumente hinzufügen: -WindowsStyle Hidden -command"PfadZumScript" errreicht.
Allerdings poppt hier auch kurz jeweils ein PS-Fenster auf.
Meine Recherche hat ergeben, das ich dagegen nichts tun kann, könnt Ihr das bestätigen, oder gibt es dafür doch eine Lösung?
Ja, starte dein Skript mit einem kleinen VBS-Skript aus der Aufgabenplanung
01.
CreateObject("Wscript.Shell").Run "powershell -Executionpolicy ByPass -File ""PfadzumScript.ps1""",0,False
Wünsche Euch ein schönes Wochenende
Gleichfalls.

Grüße Uwe
Bitte warten ..
Mitglied: potshock
09.02.2019 um 14:51 Uhr
Hallo Uwe,

sorry, aber ich bin wohl zu dumm ;-(!
Vieleicht kannst Du mir noch einmal Hilfestellung geben.

1.) Ich habe "Add-Type -AssemblyName System.Windows.Forms" und auch mal
"Add-Type -AssemblyName -System.Windows.Forms.MessageBox" jeweils oben in mein Script eingefügt.

Beim Ausführen der Aufgabe folgendes Benutzerkto.verwenden:
ONE\Administrator
"[.] Nur ausführen, wenn der Benutzer angemeldet ist" ist angeklickt.
Unter Bedingungen und Einstellungen habe ich die Default Einstellungen übernommen.

Leider klappt es immer noch nicht.

2.) CreateObject("Wscript.Shell").Run "powershell -Executionpolicy ByPass -File ""PfadzumScript.ps1""",0,False
"VbsSicher.vbs" tut das was es soll, wenn ich es direkt aufrufe, aber in der Aufgabenplanung wieder nicht .
Meine Einstellungen dort sind:
Programm/Script:
C:\Windows\System32\cscript.exe
Argumente: -Command "C:\Scripts\VbsSicher.vbs

Danke

Potshock
Bitte warten ..
Mitglied: colinardo
09.02.2019, aktualisiert um 17:21 Uhr
Zitat von potshock:
1.) Ich habe "Add-Type -AssemblyName System.Windows.Forms" und auch mal
"Add-Type -AssemblyName -System.Windows.Forms.MessageBox" jeweils oben in mein Script eingefügt.
ist ja auch falsch geschrieben.Beachte das Add-Type erst ab PS 3.0 verfügbar ist, wenn das nicht der Fall ist musst du die alte Variante zum Laden verwenden.
01.
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
Leider klappt es immer noch nicht.

2.) CreateObject("Wscript.Shell").Run "powershell -Executionpolicy ByPass -File ""PfadzumScript.ps1""",0,False
"VbsSicher.vbs" tut das was es soll, wenn ich es direkt aufrufe, aber in der Aufgabenplanung wieder nicht .
Meine Einstellungen dort sind:
Programm/Script:
C:\Windows\System32\cscript.exe
Argumente: -Command "C:\Scripts\VbsSicher.vbs
Wieso gehst du automatisch davon aus das cscript.exe den Parameter -Command hat??? Den gibt es nicht! Geb mal Cscript /? In die Konsole ein dann erübrigt sich die Frage! Außerdem auf Tippfehler und Leerzeichen im Pfad achten!

Wie man Powershell-Skripte über die Aufgabenplanung ausführt habe ich hier schon x mal gespostet. Findest du in meinen Beiträgen, also einfach mal die Suche anwerfen. Das wiederhole ich jetzt nicht nochmal.

Und was in deinem Skript, falsch läuft kannst du effektiv mit dem CMDLet Start-Transcript erörtern falls im Skript selbst Fehler liegen , z.B Berechtigungsprobleme auf Ressourcen oder nicht vorhandene Laufwerke durch andere Credentials etc. pp.

Falls du trotz allem nicht in der Lage bist es zu beheben, => PN dann schauen wir nach Absprache per Teamviewer drauf.

Und falls du mir immer noch nicht glaubst (Über die Aufgabenplanung ausgeführt, Benutzer muss natürlich angemeldet sein sonst bringt das ja nichts):

a68a30f1d20bea2b03ae65ee132426fd - Klicke auf das Bild, um es zu vergrößern

screenshot - Klicke auf das Bild, um es zu vergrößern

Das &'C:\Pfad\Script.ps1' ist nur eine weitere Variante wie man Skripte über den Command-Parameter ausführen kann.


Zum Abschluss noch meine Grundlagen dazu die ich immer wieder dazu hier poste.

Anleitung: Wie starte ich Powershell-Scripte

  • Zuerst speichert man den Code in einer Textdatei mit der Endung .ps1.
  • Wenn man zum ersten mal Powershell-Scripte ausführt, musst man einmalig vorher noch das Ausführen von Scripten im User-Account freischalten. Dazu öffnet man eineadministrative Powershell-Konsole und gibt dort den Befehl Set-ExecutionPolicy RemoteSigned -Force ein. Um diese Policy für alle User auf dem Rechner zu setzen muss man diesen Befehl in einer Powershell-Konsole mit Admin-Rechten starten. Noch ein Hinweis für 64-Bit-Systeme: Hier sollte sowohl für die 32bit und 64Bit Variante der Powershell die Policy in einer Admin-Konsole gesetzt werden: Set-ExecutionPolicy RemoteSigned -Force; start-job { Set-ExecutionPolicy RemoteSigned -Force } -RunAs32
  • Jetzt kann das Powershell-Script wie weiter unten erläutert in einer Powershell-Konsole oder aus einer CMD-Fenster heraus ausgeführt werden. Wer lieber mit der Maus arbeitet macht einen Rechtsklick auf die Script-Datei und wählt: Mit Powershell ausführen.
  • Alternativ lässt sich ein Script auch ohne das globale Ändern der ExecutionPolicy ausführen indem man die Policy als Parameter auf der Kommandozeile mitgibt:
powershell.exe -ExecutionPolicy ByPass -File "C:\Pfad\Script.ps1"
Starten eines Scriptes in einer Powershell-Konsole
Immer den kompletten Pfad zum Script angeben, und wenn er Leerzeichen beinhaltet in Anführungszeichen einschließen:
"C:\Pfad\script.ps1"
Liegt das Script im selben Verzeichnis in dem man sich gerade befindet, kann man es auch so abkürzen:
.\script.ps1
Starten von PS-Scripten aus Batch und Kommandozeilen heraus:
Hier gibt es unterschiedliche Methoden, je nach Anforderungen gibt es hier einige Besonderheiten vor allem bei Leerzeichen in Pfaden zu beachten!
Der einfachste Aufruf sieht hier so aus:
powershell.exe -File "C:\Pfad\Script.ps1"
Wenn man dem Script Parameter übergeben möchte:
powershell.exe -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"
Wenn man "benannte" Parameter übergeben möchte (die einfachen Hochkommas um den Scriptpfad werden benötigt wenn er Leerzeichen beinhaltet):
powershell.exe -command "&'C:\Pfad\Script.ps1' -par1 'Wert1' -par2 'Wert2'"
Man kann auch mehrere Scripte hintereinander ausführen lassen:
powershell.exe -command "&'C:\Pfad\Script1.ps1';&'C:\Pfad\Script2.ps1'"
Weitere Parameter zeigt einem ein powershell -? in einer Konsole an.
Starten von PS-Scripten in der Aufgabenplanung (Taskplaner)
In der jeweiligen Aktion unter "Programm/Script" trägt man powershell.exe ein und unter "Argumente hinzufügen (optional)" trägt man wie oben geschrieben alles was hinter powershell.exe kommt ein - also z.B. -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"

Damit sollte kein Wunsch mehr offen sein.
Bitte warten ..
Mitglied: potshock
09.02.2019 um 20:15 Uhr
Hi Uwe,

Danke läuft !

Frage lieber nicht woran es gelegen hat, es wird deine Motivation, deine Zeit und KnowHow in einem Forum einzubringen, nicht steigern.

Ich Vollpfosten habe die einmal erstellte Aufgabe heute morgen immer wieder bearbeitet.
Erst als ich heute Abend eine neue Aufgabe erstellt habe ist mir aufgefallen, dass heute Samstag und nicht Sonntag ist !

Zielführend war auf jeden Fall dein Tipp:
"Damit du Messageboxes in deinem Skript nutzen kannst musst du den Namespace System.Windows.Forms auch erst importieren den du hier nutzt, damit du ihn verwenden kannst. In der ISE ist dieser per Default schon importiert."
01.
Add-Type -A System.Windows.Forms
Besten Dank und schönen Abend noch

Potshock
Bitte warten ..
Ähnliche Inhalte
Windows Server

Aufgabenplanung soll Powershell-Script ausführen

gelöst Frage von it-fraggleWindows Server6 Kommentare

Hallo, habe ein Problem mit meinem Windows Server 2016. Ich muss ein Script einbinden, was mir eine Mail zusendet, ...

Windows Server

PowerShell-Script wird per Aufgabenplanung nicht ausgeführt

gelöst Frage von YotYotWindows Server17 Kommentare

Mahlzeit! Auf einem 2012 Server mit 2013 Exchange lasse ich einige Dinge automatisiert ablaufen, dazu gibt es diverse PowerShell-Scripts, ...

Batch & Shell

PowerShell Aufgabenplanung Share AccessDenied

Frage von MarabuntaBatch & Shell1 Kommentar

Hallo, mein Problem ist, dass der Zugriff auf das Shareverzeichnis verweigert wird. Dabei wird kein Netzlaufwerk verwendet(hat auch nicht ...

Batch & Shell

Powershell gci in Aufgabenplanung

gelöst Frage von Druide83Batch & Shell3 Kommentare

Hallo, ich bin langsam am verzweifeln. Ich habe ein Skript, das über Powershell und ISE normal funktioniert, aber über ...

Neue Wissensbeiträge
Internet

CDU Propaganda: Urheberschutz im Internet - Ende des digitalen Wild-West

Information von Frank vor 10 StundenInternet3 Kommentare

Hallo Administratoren, aus einem Kommentar heraus habe ich folgenden Beiträge von Herr Sven Schulze und Axel Voss (beide CDU ...

Router & Routing

Zyxel VMG 1312 B30A - Firmwareupdate nur im "privaten" Firefox Modus möglich

Tipp von the-buccaneer vor 1 TagRouter & Routing2 Kommentare

Hatte hier ein Zyxel 1312 das ums verrecken kein Firmwareupdate durchführen wollte. Datei ist auswählbar, dann kommt der Fortschrittskreisel ...

Windows 7

Windows 7 u. Server 2008 (R2) SHA-2-Update kommt am 12. März 2019

Information von kgborn vor 2 TagenWindows 75 Kommentare

Kleine Info für die Admins der oben genannten Maschinen. Ab Juli 2019 werden Updates von Microsoft nur noch mit ...

Firewall
PfSense 2.5.0 benötigt doch kein AES-NI
Information von ChriBo vor 4 TagenFirewall2 Kommentare

Hallo, Wie sich einige hier erinnern werden hat Jim Thompson in diesem Aritkel beschrieben, daß ab Version 2.5.0 ein ...

Heiß diskutierte Inhalte
Hardware
IT-Werkzeugkoffer bis 50,- EUR
gelöst Frage von departure69Hardware53 Kommentare

Hallo. Ich bin als IT-Systembetreuer einer Gemeinde zusätzlich auch der IT-Systembetreuer einer Grund- und Hauptschule. Dort muß ich jedoch ...

Netzwerke
Verteilung von Programmdaten außerhalb des internen Netzwerkes
Frage von mertaufmbergNetzwerke27 Kommentare

Guten Morgen liebe Administratoren, ich versuche zurzeit eine möglichst sichere und einfache Lösung zu suchen, um ein Programmverzeichnis über ...

Datenbanken
PHP Fatal error: Uncaught Error: Call to undefined function oci connect
Frage von PlanitecXDatenbanken19 Kommentare

Hallo Zusammen, ich sitze seit Tagen am Problem das ich keine PHP Anwendung mit Anbindung zu Oracle zum laufen ...

Hardware
PC im Selbstbau, Workstation, mittelklasse Gaming
gelöst Frage von MrRobot1997Hardware19 Kommentare

Hallöchen Leute, ich bin seit einigen Jahren leider nicht mehr wirklich im Bild, wenn es um die Hardware und ...