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 mehrere Programme aus .txt lesen und ausführen

Mitglied: deiferl

deiferl (Level 1) - Jetzt verbinden

10.08.2011 um 12:13 Uhr, 8131 Aufrufe, 3 Kommentare

Hallo,

bin neu in der wunderbaren Welt der Powershell und stehe vor meinem ersten Problem:

Es sollen in einer .txt hinterlegte Programme zu Testzwecken gestartet werden.Zu erst habe ich eine .txt angelegt, in welcher die betreffenden .exe und Programmpfade genannt sind.
zB.:
C:\programme\Adobe\Reader 9.0\Reader\AcroRd32.exe
C:\programme\Microsoft Office\Office12\WINWORD.EXE
C:\programme\SAP\SapSetup\setup\SAL\SapLogon.s8l

Mit folgenden Zeilen erstelle ich nun eine Vergleichsliste in einer .ps1

># Programme starten
Switch -file "h:\pss\ps1\SWListCompared.txt" {
default {Invoke-Item $_}
}


Mit switch lese ich den Inhalt der Datei zeilenweise ein und übergebe die Zeilen jeweils an invoke-item um das Programm zu starten (soweit die Idee)
Die Programme werden auch gestartet, also die Funktion wäre prinzipiell gegeben. Dabei bekomme ich aber immer Fehlermeldungen:

>Invoke-Item : Das Argument kann nicht an den Parameter "Path" gebunden werden, da es sich um eine leere Zeichenfolge handelt.
Bei H:\pss\ps1\Run-SWList2.ps1:31 Zeichen:25

default {Invoke-Item <<<< $_}

CategoryInfo : InvalidData: ( : ) [Invoke-Item], ParameterBindingValidationException

FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.InvokeItemCommand"



Das Problem scheint also die Pfadangabe der Variablen $_ für invoke-item zu sein, ohne Pfadangabe kann ich aber nicht direkt an invoke-item übergeben.
Selbes Problem habe ich auch mit einer foreach-Schleife und Übergabe an invoke-item.
Ich denke, ich habe hier einen groben Verständnisfehler, komme aber nicht darauf und bitte euch um tatkräftige Unterstützung.
Mitglied: Logan000
10.08.2011 um 13:31 Uhr
Moin moin

Die gute Nachricht zuerst: Wie du schon vermutet hast ...
also die Funktion wäre prinzipiell gegeben.
liegt der "Fehler" nicht in deinem Skript. Das funktioniert genau so wie du es programmiert hast.

Invoke ist hier nicht das Problem. Das rennt los und führt aus.
Es mosert nur rum wenn der Pfad nicht existiert oder, wie in deinem Fall, keiner angegeben wird.

Das Switch macht auch nur seinen Job und liest deine SWListCompared.txt zeilenweise aus.
Aber wer immer diese SWListCompared.txt erstellt hat, sollte dafür sorgen das sie keine leeren Zeilen enthält.
Oder Du prüfst in deinem Skript, vor dem invoke ab, ob da villeicht ein leerer Parameter im Anflug ist.

Gruß L.
Bitte warten ..
Mitglied: deiferl
10.08.2011 um 15:49 Uhr
Moin,

Danke für den Tip (eigentlich weisst einen der Fehler ja drauf hin ) Und tatsächlich.
Die SWList.txt ist das Ergebnis eines compare.

$strCompared = Compare $strReference $strDifference -includeEqual -excludeDifferent
$strCompared | ft InputObject -hidetableheaders -auto | out-file -filepath "h:\pss\ps1\SWListCompared.txt"

Da wird am Anfang eine Leerzeile geschrieben und am Ende nochmals zwei. In den zu vergleichenden Dateien gibts die aber nicht. Wie kann ich die denn entfernen? Irgendwie steh ich jetzt aufm Schlauch.

Nochmals, Büdde, ein kleiner Schubs. Danke.
Bitte warten ..
Mitglied: deiferl
10.08.2011 um 16:48 Uhr
Manchmal sieht man den Wald vor Bäumen nicht. Ich denke kurz und gut ist folgendes:

  1. Programme starten
Switch -file "h:\pss\ps1\SWListCompared.txt" {
default {if ($_ -ne "") {
Invoke-Item $_}}
}

Damit gebe ich die Zeilen ohne Inhalt nicht an invoke-item weiter!
Thanks for "Schubs". So funktioniert es ohne Fehler.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Webseiteninhalte mit PowerShell lesen und als .txt speichern?

gelöst Frage von LaManchaBatch & Shell3 Kommentare

Hallo Skript-Experten, ich bin mal wieder dabei, die Reisepreise von AIDA Vario zu beobachten (www.aida.de/vario, insgesamt ca. 12 Seiten). ...

Windows Server

GPO: Clients können Programme nicht mehr ausführen

gelöst Frage von CangaruuWindows Server2 Kommentare

Hallo, dies ist mein erster Beitrag und ich freue mich auf unseren gegenseitigen Erfahrungsaustausch. Nun zum Kern: Wir haben ...

Batch & Shell

Remote Powershell ausführen wie lokale Powershell

gelöst Frage von IngenieursBatch & Shell2 Kommentare

Hallo vielleicht ist der Titel nicht ganz deutlich formuliert. Ich möchte wissen ob es eine Möglichkeit gibt Remote Powershell ...

Batch & Shell

Remote-PowerShell Script auf mehreren Rechnern gleichzeitig Ausführen

gelöst Frage von AlthalusBatch & Shell4 Kommentare

Hallo zusammen, nach dem mein letztes Script ) Dank der Hilfe von 'grexit' super läuft und die heutige Erprobung ...

Neue Wissensbeiträge
Monitoring
Career in Freelancing
Anleitung von rcreddy vor 1 MinuteMonitoring

Freelancing won't be a Gen Y thing, but rather a full-time freelancing career is. It takes a great deal ...

Exchange Server

Exchange 2010-2019 Sicherheitslücke durch Regkey löschen schließen

Information von sabines vor 4 StundenExchange Server

Unter ist eine Lücke im Exchange 2010-2019 beschrieben, die durch das Löschen eines reg keys geschlossen werden kann. In ...

Windows Server
Erneutes Release von WS2019 und Win10 v1809
Tipp von IT-Pro vor 1 TagWindows Server3 Kommentare

Hi, nachdem der Windows Server 2019 und Windows 10 in der Version 1809 aufgrund von verschwinden von Dateien nach ...

CPU, RAM, Mainboards
Spectre Update Tool für ältere PCs
Information von sabines vor 1 TagCPU, RAM, Mainboards6 Kommentare

Mit Hilfe eines Tools wird der betreffende PC permanent von einem USB Stick gestartet, der ein passendes Microcode Update ...

Heiß diskutierte Inhalte
Batch & Shell
Ordnernamen mit String aus Ziffern-Zahlenkombination erstellen
Frage von MmarKussBatch & Shell16 Kommentare

Hallo zusammen, ich habe ein etwas komplexeres Problem, welches ich selbst mittels einer Batch-Datei lösen will / muss, da ...

Windows Server
Lohnt sich eine Domäne für uns?
Frage von BowsetteWindows Server15 Kommentare

Hallo, ich arbeite in einem kleinen Unternehmen mit mehr als 5 und weniger als 10 Mitarbeitern, also Small Business ...

Java
Testautomatisierung
Frage von WPFORGEJava13 Kommentare

Hallo, nehmen wir an, es gibt eine Webseite mit einer Karte und einem Suchfeld. Nun wird in das Suchfeld ...

Hardware
Laptop kaputt Hilfe
gelöst Frage von smash0Hardware13 Kommentare

Hi. ich habe mein laptop geputzt und unter wasser also laufenden wasser gehalten. Jetzt geht der nicht mehr an, ...