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

Frage Entwicklung Batch & Shell

Mitglied: deiferl

deiferl (Level 1) - Jetzt verbinden

10.08.2011 um 12:13 Uhr, 7827 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
gelöst Mehrzeiligen Powershell-Befehl mit Batch ausführen (3)

Frage von 133202 zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell - DISK - Als Administrator ausführen (2)

Frage von StfnCstr zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell-Script als Admin über CMD ausführen (2)

Frage von Tobiased zum Thema Batch & Shell ...

Batch & Shell
gelöst Werte aus CSV in TXT - Powershell (20)

Frage von Komoran12 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 im Unternehmen? (26)

Frage von zorlayan zum Thema Windows 10 ...

LAN, WAN, Wireless
Ping u. DNS geht am Rechner nicht mehr (19)

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

Festplatten, SSD, Raid
Raid 1 2 SSD mit Windows Server 2016 (17)

Frage von jaywee zum Thema Festplatten, SSD, Raid ...

Voice over IP
Über Fritzfax over IP gehen nur einige Faxe (13)

Frage von shearer9 zum Thema Voice over IP ...