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

Mehrere if anweisungen in Powershell

Frage Entwicklung Batch & Shell

Mitglied: user88

user88 (Level 1) - Jetzt verbinden

29.07.2010, aktualisiert 08:38 Uhr, 16839 Aufrufe, 3 Kommentare

Hallo,

ich arbeite schon seit einer Woche an meinem ersten Powershell-Script.

Doch im Moment komm ich leider nicht mehr weiter.

Ich muss irgendwie in dem Script fragen, ob ein Verzeichnis existiert. Und wenn ein Verzeichnis existiert, dann soll überprüft werden, ob eine bestimmte Datei existiert.
Wenn diese bestimmte Datei nicht existiert, dann soll sie angelegt werden.
Sollte das Verzeichnis nicht existieren, dann soll sie angelegt werden.

$Verzeichnis = 'C:\Scripte\Powershell'
$Datei = 'C:\Scripte\Powershell\test.txt'

If (Test-Path $Verzeichnis){
echo "Verzeichnis existiert"

If (Test-Path $Datei){
{echo "Datei existiert"}
else
{echo "Datei existiert nicht"
New-Item 'C:\Scripte\Powershell' -Name test.txt -type "file" -value "testtesttest" -force}



else
{New-Item C:\Scripte\Powershell -type directory
}}}

aber irgendwie funktioniert das ganze nicht.

Woher weiß ich, dass wenn z.B. das Verzeichnis nicht existiert und der Script zu letzten else springt, und nicht zu ersten else?

Hoffe ihr könnt mir helfen.
danke schon mal im Vorraus.
Mitglied: Korrn
29.07.2010 um 09:28 Uhr
Hallo.

Warum verschachtelst Du die IF-Anweisungen überhaupt?

IF NOT EXIST %verzeichnis% MKDIR %verzeichnis%
IF NOT EXIST %verzeichnis%\%datei% MK %verzeichnis%\%datei%

Ansonsten müsstest Du Deine aktuelle Logik entweder zwei mal durchlaufen, oder hinter "{New-Item C:\Scripte\Powershell -type directory" im else-Zweig der äußeren Verzweigung nach dem Verzeichnis auch noch die Datei anlegen.
Bitte warten ..
Mitglied: 5t8d1e
29.07.2010 um 09:31 Uhr
Hallo user88,

hier der Auszug aus der Hilfe von PoSh, das Zauberwort nennt sich elseif .

Syntax
Im folgenden Beispiel wird die Syntax der If-Anweisung
veranschaulicht:


if (<Test1>)
{<Anweisungsliste 1>}
[elseif (<Test2>)
{<Anweisungsliste 2>}]
[else
{<Anweisungsliste 3>}]


Wenn Sie eine If-Anweisung ausführen, wird von Windows PowerShell
die Bedingungsüberprüfung <Test1> als "True" oder "False"
ausgewertet. Wenn <Test1> "True" ergibt, wird <Anweisungsliste 1>
ausgeführt, und die If-Anweisung wird von Windows PowerShell beendet.
Wenn <Test1> "False" ergibt, wird von Windows PowerShell die
durch die Bedingungsanweisung <Test2 > angegebene Bedingung
ausgewertet.

Grüße Torsten
Bitte warten ..
Mitglied: user88
29.07.2010 um 10:22 Uhr
hey Korrn#,

wenn ich den Teil zwei Mal durchlaufen lasse oder nach {New-Item C:\Scripte\...} was einfüge wird der Code zu lang und unprofessionell.:D

Zitat von Korrn:
IF NOT EXIST %verzeichnis% MKDIR %verzeichnis%
IF NOT EXIST %verzeichnis%\%datei% MK %verzeichnis%\%datei%


du verwechselst Batch mit Powershell oder umgekehrt.


Ich hab mir dann den Syntax zu If-Anweisung genauer angeschaut, und diesen kurzen Code geschrieben.

$Verzeichnis = 'C:\temp\sem'
$Datei = 'C:\Scripte\Powershell\test.txt'

if (Test-Path $Datei)
{echo "Datei existiert"}
else {New-Item 'C:\Scripte\Powershell' -Name test.txt -type "file" -value "testtesttest" -force}

Es funktioniert einwandfrei.

Danke euch beiden, zumal ich nicht wusste, dass bei Powershell die if-anweisung True oder False ausgibt.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Powershell: Mehrere Domains einlesen (9)

Frage von Agilolfinger zum Thema Batch & Shell ...

Rechtliche Fragen
Arbeitnehmer müssen strittige Anweisungen nicht mehr befolgen (4)

Link von Lochkartenstanzer zum Thema Rechtliche Fragen ...

Batch & Shell
Mehrere AD Benutzer aus CSV Datei mit PowerShell erstellen (1)

Frage von windelterrorist 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
LAN, WAN, Wireless
CNC Maschinen verlieren Netzwerkverbindung (kurioser Fehler) (22)

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

Webentwicklung
Aktuellen Mitarbeiter auf Homepage anzeigen (13)

Frage von alemanne21 zum Thema Webentwicklung ...

Windows Server
gelöst Parameter Übergabe Terminal Server (9)

Frage von ThomasKern zum Thema Windows Server ...

Batch & Shell
Anfängerfragen - Powershell - Mailboxvertretung im Pulk einrichten (8)

Frage von Yoshimitsu zum Thema Batch & Shell ...