Abfrage ob Datei von heute da ist
Hallo,
Ich sichere täglich meine Wordpress Dateien in einen Ordner als ZIP Datei.
Dieser Ordner hat folgenden Inhalt:
Um zu prüfen ob das Backup auch läuft erstelle ich mir von Zeit zu Zeit eine Textdatei von dem Ordnerinhalt und schicke es mir automatisch per Mail.
FRAGE:
Gibt es eine Möglichkeit auf der Dateiebene abzufragen ob Dateien der letzten 5 Tage da sind ?
Dann könnte ich den Listenversand nur dann auslösen wenn es einen Fehler gibt.
Hab irgendwie keine Idee wie ich da starten könnte ....
Ich sichere täglich meine Wordpress Dateien in einen Ordner als ZIP Datei.
Dieser Ordner hat folgenden Inhalt:
2016-11-15_Tagessicherung.tar
2016-11-18_Tagessicherung.tar
2016-11-19_Tagessicherung.tar
2016-11-20_Tagessicherung.tar
2016-11-21_Tagessicherung.tar
Um zu prüfen ob das Backup auch läuft erstelle ich mir von Zeit zu Zeit eine Textdatei von dem Ordnerinhalt und schicke es mir automatisch per Mail.
FRAGE:
Gibt es eine Möglichkeit auf der Dateiebene abzufragen ob Dateien der letzten 5 Tage da sind ?
Dann könnte ich den Listenversand nur dann auslösen wenn es einen Fehler gibt.
Hab irgendwie keine Idee wie ich da starten könnte ....
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 321631
Url: https://administrator.de/contentid/321631
Ausgedruckt am: 25.11.2024 um 17:11 Uhr
23 Kommentare
Neuester Kommentar
Moin,
außer dem Datum müßtest Du aber auch die Größe und Integrität der Datei prüfen.
Und selbst dann könnte der DB-Dump innerhalb der Datei einfach eine Größe von 0 Bytes haben.
Besser wäre wenn das Skript seine Aktionen überprüfen würde und am Ende eine Mail verschickt.
MySQLDump, tar und zip haben auch unter Linux einen Rückgabewert.
Stefan
außer dem Datum müßtest Du aber auch die Größe und Integrität der Datei prüfen.
Und selbst dann könnte der DB-Dump innerhalb der Datei einfach eine Größe von 0 Bytes haben.
Besser wäre wenn das Skript seine Aktionen überprüfen würde und am Ende eine Mail verschickt.
MySQLDump, tar und zip haben auch unter Linux einen Rückgabewert.
Stefan
Zitat von @Lochkartenstanzer:
Jupp,
Das ist auch meine methode. Es wird immer ein mail bei backups verschickt. Wenn die mail ausbleibt, ist etwas schiefgelaufen.
lks
Ganz meine Meinung!Jupp,
Das ist auch meine methode. Es wird immer ein mail bei backups verschickt. Wenn die mail ausbleibt, ist etwas schiefgelaufen.
lks
Hallo @pbelcl,
für ein Windows System könntest Du es mit Powershell bewerkstelligen. Da als Dateiendung .tar angegeben ist könnte es in shell umgearbeitet werden.
Könnte noch verfeinert werden in dem nicht geprüft wird ob 5 Dateien mit der Namenbezeichnung Wildcard_Tagessicherung.tar vorhanden sind, sondern wann das Erstellungsdatum der Dateien ist etc.
Hier gibt es wie üblich viele Wege zum Ziel.
Gruß, Sascha
für ein Windows System könntest Du es mit Powershell bewerkstelligen. Da als Dateiendung .tar angegeben ist könnte es in shell umgearbeitet werden.
if((dir C:\BackupOrdner | Where-Object {$_.Name -like "*_Tagessicherung.tar"}).Count -lt "5"){
#Kommentar: Bedingung wurde nicht erfüllt, es sind weniger als 5 Backupdateien vorhanden, sende Mail als Folge.
Send-MailMessage –To "Empfänger@Adresse.de" –Subject "Status tägliches Backup" –Body "Es sind nicht alle Backups vorhanden." –SmtpServer "ServerAdresse" –From "Absender@Powershell.de"
} else {
#Kommentar: Bedingung wurde erfüllt.
}
Hier gibt es wie üblich viele Wege zum Ziel.
Gruß, Sascha
Abfrage ob Datei von heute da ist
für heute:#!/bin/bash
[[ -f "$(date +%Y-%m-%d)_Tagessicherung.tar" ]] && echo Is da! || echo Is nicht da.
Gibt es eine Möglichkeit auf der Dateiebene abzufragen ob Dateien der letzten 5 Tage da sind ?
für alle 5 Tage:#!/bin/bash
for i in {0..4} ;do sich="$(date -d -${i}days +%Y-%m-%d)_Tagessicherung.tar"; [[ -f "$sich" ]] || echo Sicherung "$sich" nicht vorhanden! ;done
Hallo @pbelcl,
als Empfehlung mach es nicht mit Batch, sondern direkt mit Powershell. Die Einarbeitungszeit lohnt sich alle male.
Hinweis dazu: Powershell liefert ein Send-MailMessage Methode mit, welche bei Batch über ein externes Tool gemacht werden müsste (Blat oder ein Powershell aufruf).
Zu dem von mir genannten Beispiel, erstell eine Powershell-Skript Datei (namexyz.ps1). Wurde die Powershell noch nie ausgeführt müsstest Du die Policy-Einstellungen anpassen, damit Skript Dateien ausgeführt werden dürfen. Hier eine Beitrag Set-ExecutionPolicy, kopiere den Code hinein und leg los.
Wie in Batch auch dir C:\BackupOrdner listet den Inhalt auf, zusätzlich ist eine Filterung auf Objekte mit dem Namen Wildcard_Tagessicherung.tar angsetzt und zählt letztlich die Ergebnisse zusammen und vergleicht Sie "lt = lower than"; ist also das Ergebnis kleiner 5 ist die Bedingung nicht erfüllt und es wird dir eine E-Mail zugeschickt.
So einfacher ist es, bei Fragen einfach antworten. Hier gibt es eine Vielzahl von kompetenten Usern =)
Bis denne und Gruß, Sascha
als Empfehlung mach es nicht mit Batch, sondern direkt mit Powershell. Die Einarbeitungszeit lohnt sich alle male.
Hinweis dazu: Powershell liefert ein Send-MailMessage Methode mit, welche bei Batch über ein externes Tool gemacht werden müsste (Blat oder ein Powershell aufruf).
Zu dem von mir genannten Beispiel, erstell eine Powershell-Skript Datei (namexyz.ps1). Wurde die Powershell noch nie ausgeführt müsstest Du die Policy-Einstellungen anpassen, damit Skript Dateien ausgeführt werden dürfen. Hier eine Beitrag Set-ExecutionPolicy, kopiere den Code hinein und leg los.
Wie in Batch auch dir C:\BackupOrdner listet den Inhalt auf, zusätzlich ist eine Filterung auf Objekte mit dem Namen Wildcard_Tagessicherung.tar angsetzt und zählt letztlich die Ergebnisse zusammen und vergleicht Sie "lt = lower than"; ist also das Ergebnis kleiner 5 ist die Bedingung nicht erfüllt und es wird dir eine E-Mail zugeschickt.
So einfacher ist es, bei Fragen einfach antworten. Hier gibt es eine Vielzahl von kompetenten Usern =)
Bis denne und Gruß, Sascha
Servus zusammen.
Z.B. kann man beide Welten Batch + PS kombiniert als Quasi-Einzeiler nutzen, wenn man noch nicht so weit ist die PS zu handhaben oder nicht von der CMD lassen kann .
Odner, Mail-Eigenschaften wie Mail-Adressen, Username, Passwort und Server natürlich anpassen.
Würde ich aber auch alles als "Würgarounds" bezeichnen, denn sowas gehört einfach ins Ursprungsscript das man so schreiben sollte das sich dort nichts "aufhängt". Lässt sich mit Powershell und einem separaten Prozess eine einfache Überwachung realisieren welche einen maximalen Timeout wartet falls sich ein Programm weg hängen sollte.
Grüße Uwe
Hier gibt es wie üblich viele Wege zum Ziel.
Joa die gibt es massenhaft.Z.B. kann man beide Welten Batch + PS kombiniert als Quasi-Einzeiler nutzen, wenn man noch nicht so weit ist die PS zu handhaben oder nicht von der CMD lassen kann .
@echo off
set "quelle=D:\backup"
powershell -Executionpolicy ByPass -Command "if((0..4 | %%{"$((get-date).AddDays(-$_).toString('yyyy-MM-dd'))_Tagessicherung.tar"} | ?{!(Test-Path "%quelle%\$_")})){write-host 'Nicht alle Sicherungen vorhanden, Sende Benachrichtigung ...'; Send-MailMessage -From 'user1@domain.de' -to 'user2@domain.de' -Subject 'Nicht alle Sicherungen vorhanden' -Body 'Es sind nicht alle Sicherungen der letzten 5 Tage vorhanden' -SmtpServer 'smtp.server.de' -Credential (New-Object PSCredential('USERNAME',(ConvertTo-SecureString 'PASSWORD' -AsPlainText -Force))) -UseSSL}"
Würde ich aber auch alles als "Würgarounds" bezeichnen, denn sowas gehört einfach ins Ursprungsscript das man so schreiben sollte das sich dort nichts "aufhängt". Lässt sich mit Powershell und einem separaten Prozess eine einfache Überwachung realisieren welche einen maximalen Timeout wartet falls sich ein Programm weg hängen sollte.
Grüße Uwe
Klappt hier problemlos, vermutlich nutzt du keine PS3.0.
Insider Build mit Powershell: Windows CMD.exe wird durch Open Source ersetzt
Und lernt sich schneller als man denkt!!
Viel leichter als die Batch-Ungereimtheiten und Bugs und much much more power.
aber ich möchte auch nicht jetzt dafür powershell lernen
Wird aber langsam ZeitInsider Build mit Powershell: Windows CMD.exe wird durch Open Source ersetzt
Und lernt sich schneller als man denkt!!
Viel leichter als die Batch-Ungereimtheiten und Bugs und much much more power.
Du hast 100% eine veraltete PS (2.0) oder die Executionpolicy ist nicht gesetzt... Also lerne erst mal mit der PS umzugehen dann sehen wir weiter, denn das Script geht .
Das kann man schon mit plain Batch machen dazu brauchst du dann aber zum Berechnen der Datumswerte diese Funktionen hier
http://www.robvanderwoude.com/sourcecode.php?src=dateadd_nt
Und das ist dann eher mit "Kanonen auf Spatzen" geschossen als den Einzeiler von oben zu nutzen
Wllkommen in der Gegenwart unter Windows und die PS ist dort jetzt schon lange Standard.
Diverse Rollen lassen sich nur noch mit Ihr vernünftig steuern.
http://www.robvanderwoude.com/sourcecode.php?src=dateadd_nt
Und das ist dann eher mit "Kanonen auf Spatzen" geschossen als den Einzeiler von oben zu nutzen
Wllkommen in der Gegenwart unter Windows und die PS ist dort jetzt schon lange Standard.
Diverse Rollen lassen sich nur noch mit Ihr vernünftig steuern.
Die gibt es mit einigem Aufwand lässt sich alles machen, ob man diesen Ratten### tatsächlich will, ist eine andere Frage ...
Hier dein vorgezogenes Weihnachtsgeschenk vom Wichtel der in seiner Batchkruschtelkiste auf dem Speicher gekramt hat.
Grüße und schöne Weihnachten
Uwe
Hier dein vorgezogenes Weihnachtsgeschenk vom Wichtel der in seiner Batchkruschtelkiste auf dem Speicher gekramt hat.
@echo off & setlocal
:: Variablen ==============
:: Ordner in dem sich die Backups befinden
set "BackupFolder=D:\Backups"
:: Suffix des Backups "ohne" Datum im Format (YYYY-MM-DD)
set "nameSuffix=_Tagessicherung.tar"
:: Anzahl der Tage zurück inkl. Heute
set numDays=5
::=========================
set /a numDays-=1
set ERROR=
for /L %%a in (0 1 %numDays%) do (
call :AddDays %date% -%%a newDate
setlocal ENABLEDELAYEDEXPANSION
if not exist "%BackupFolder%\!newDate!%nameSuffix%" set ERROR=1 & echo Backup vom "!newDate!" wurde im Ordner "%BackupFolder%" nicht gefunden.
setlocal DISABLEDELAYEDEXPANSION
)
echo.
if not defined ERROR echo Alle Backups vorhanden.
echo.
pause
goto :eof
::===========================================================================
:: Subroutines: Datum berechnen
:: Parameter 1: Datum im lokalen Format
:: Parameter 2: Anzahl Tage die addiert oder subtrahiert werden sollen
:: Parameter 3: Variable welcher das berechnete Datum zugewiesen werden soll
::===========================================================================
:AddDays
set "DaysToAdd=%~2"
for /f "skip=2 tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v iDate') do set iDate=%%a
for /f "skip=2 tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v sDate') do set sDate=%%a
if %iDate%==0 FOR /F "TOKENS=1-3 DELIMS=%sDate%" %%A IN ('ECHO.%~1') DO (
SET GYear=%%C
SET GMonth=%%A
SET GDay=%%B
)
if %iDate%==1 FOR /F "TOKENS=1-3 DELIMS=%sDate%" %%A IN ('ECHO.%~1') DO (
SET GYear=%%C
SET GMonth=%%B
SET GDay=%%A
)
if %iDate%==2 FOR /F "TOKENS=1-3 DELIMS=%sDate%" %%A IN ('ECHO.%~1') DO (
SET GYear=%%A
SET GMonth=%%B
SET GDay=%%C
)
IF %GMonth:~0,1% EQU 0 SET GMonth=%GMonth:~1%
IF %GDay:~0,1% EQU 0 SET GDay=%GDay:~1%
SET /A GMonth1= ( %GMonth% - 14 ) / 12
SET /A GYear1= %GYear% + 4800
SET /A JDate= 1461 * ( %GYear1% + %GMonth1% ) / 4 + 367 * ( %GMonth% - 2 -12 * %GMonth1% ) / 12 - ( 3 * ( ( %GYear1% + %GMonth1% + 100 ) / 100 ) ) / 4 + %GDay% - 32075
if "%DaysToAdd:~0,1%" == "-" (set /a JDate-=%DaysToAdd:~1%) else (set /a JDate+=%DaysToAdd%)
SET /A P= %JDate% + 68569
SET /A Q= 4 * %P% / 146097
SET /A R= %P% - ( 146097 * %Q% +3 ) / 4
SET /A S= 4000 * ( %R% + 1 ) / 1461001
SET /A T= %R% - 1461 * %S% / 4 + 31
SET /A U= 80 * %T% / 2447
SET /A V= %U% / 11
SET /A GYear=100 * ( %Q% - 49 ) + %S% + %V%
SET /A GMonth=%U% + 2 - 12 * %V%
SET /A GDay=%T% - 2447 * %U% / 80
IF 1%GMonth% LSS 20 SET GMonth=0%GMonth%
IF 1%GDay% LSS 20 SET GDay=0%GDay%
set %~3=%GYear%-%GMonth%-%GDay%
Goto :EOF
Grüße und schöne Weihnachten
Uwe
Freut mich das es dich freut
Also, der obige Powershell-Batch-Schnippsel war ja für die direkte Verwendung von Powershell-Code innerhalb einer Batchdatei gedacht. Da man bei dieser Variante etwas mit Sonderzeichen aufpassen muss wie z.B. Prozentzeichen und Anführungszeichen, hier mal der reine PS Code für die Ausführung in einer Powershell-Konsole.
Die Bedingung ist hier der Hauptteil welcher sich aus folgenden Teilen zusammensetzt:
Das folgende Konstrukt erzeugt ein Array aus Zahlen, genauer 0,1,2,3,4
Ausschreiben könnte man es auch so (typische For-Schleife mit Ausgabe der Laufvariablen)
dieses Array wird dann via Pipe | an eine Foreach-Schleife übergeben welche mit diesem Kürzel abgekürzt wird %{}.
In der Schleife wird für jede Nummer des Arrays also 0-4 jeweils der Dateiname der Backupdateien generiert. Und zwar wird dazu vom heutigen Datum die Nummer aus dem Array abgezogen also beim ersten Durchlauf 0 beim zweiten 1 usw. Das Datum wird dann zu einem String in deinem Format umgeformt und daran das _Tagessicherung.tar als String angehängt.
Das Zwischenergebnis dieser Schleife ist dann ein Array aus den Dateinamen der letzten 5 Backupsätze, Quasi die Referenz wie sie sein soll.
Als nächsten Schritt übergeben wir dieses Array aus Dateinamen via Pipe an ein sogenanntes Where-Object für das die Abkürzung ?{} ist, Powershell Programmierer mögens gerne kurz . Das Where-Object ist so etwas wie eine IF-Prüfung für die Objekte in der Pipeline. Es prüft die Bedingung die in ihm steht und wenn sie $True ist wird das aktuelle Objekt in der Pipeline (hier der Dateiname des Backups) in der Pipeline weitergereicht, ansonsten nicht.
Hier wird jetzt für jeden Dateinamen der im Array via Pipe übergeben wurde geprüft ob die Datei im Backup-Verzeichnis vorhanden ist, Test-Path erwartet als Parameter einen Pfad, welchen wir übergeben, jedoch mit der Besonderheit das wir diesen mit dem jeweiligen Dateinamen aus dem Array ergänzen, was wir mit der speziellen Variablen $_ machen welche immer das aktuelle Objekt der Pipeline also hier den Dateinamen enthält. Doch halt, jetzt fragst du dich was das Ausrufezeichen vor dem Test-Path Ausdruck macht: Ganz simpel Test-Path liefert uns einen Boolean-Wert zurück ob eine Datei existiert. Tut sie das $true, ansonsten $False. Das Ausrufezeichen bedeutet -NOT also das umdrehen des boolschen Wertes wie du es sicher aus Batch mit if not exist kennst.
So, nun haben wir also als Ergebnis der IF-Bedingung die Dateinamen die nicht im Backupverzeichnis vorkommen. Wenn also die Bedingung alle Dateien findet hat das Ergebnis der Bedingung keine Ausgabe, also ist sie $false und die Aktion in der IF-Schleife wird nicht ausgeführt. Bei mindestens einer fehlenden Datei gibt es ein Ergebnis und die Bedingung wird $true und die Mail wird verschickt.
Die Parameter des Send-MailMessage-Befehls sollten klar sein. Wenn nicht kannst du sie hier nachschlagen
http://ss64.com/ps/send-mailmessage.html
Zum Testen des Codes öffnest du eine Powershell ISE und kopierst ihn dort hinein, passt den Backup-Pfad in der Bedingung, sowie die Parameter von Send-Mailmessage an und drückst F5. Fertig.
Wie man das ganze dann als Skript speichert und ausführt siehe:
Liegt das Script im selben Verzeichnis in dem man sich gerade befindet, kann man es auch so abkürzen:
Der einfachste Aufruf sieht hier so aus:
Wenn man dem Script Parameter übergeben möchte:
Wenn man "benannte" Parameter übergeben möchte (die einfachen Hochkommas um den Scriptpfad werden benötigt wenn er Leerzeichen beinhaltet):
Man kann auch mehrere Scripte hintereinander ausführen lassen:
Weitere Parameter zeigt einem ein
Hoffe das hilft dir beim PS Einstieg etwas
Schönen 4ten Advent
Grüße Uwe
Also, der obige Powershell-Batch-Schnippsel war ja für die direkte Verwendung von Powershell-Code innerhalb einer Batchdatei gedacht. Da man bei dieser Variante etwas mit Sonderzeichen aufpassen muss wie z.B. Prozentzeichen und Anführungszeichen, hier mal der reine PS Code für die Ausführung in einer Powershell-Konsole.
if((0..4 | %{"$((get-date).AddDays(-$_).toString('yyyy-MM-dd'))_Tagessicherung.tar"} | ?{!(Test-Path "D:\Backup\$_")})){
write-host 'Nicht alle Sicherungen vorhanden, Sende Benachrichtigung ...'
Send-MailMessage -From 'user1@domain.de' -to 'user2@domain.de' -Subject 'Nicht alle Sicherungen vorhanden' -Body 'Es sind nicht alle Sicherungen der letzten 5 Tage vorhanden' -SmtpServer 'smtp.server.de' -Credential (New-Object PSCredential('USERNAME',(ConvertTo-SecureString 'PASSWORD' -AsPlainText -Force))) -UseSSL
}
Folgend die Erläuterungen zum Code:
Um das ganze Konstrukt erstreckt sich eine IF-Anweisungif(){
#Code auszuführen wenn Bedingung positiv
}
Das folgende Konstrukt erzeugt ein Array aus Zahlen, genauer 0,1,2,3,4
0..4
for ($i = 0;$i -le 4;$i++){$i}
In der Schleife wird für jede Nummer des Arrays also 0-4 jeweils der Dateiname der Backupdateien generiert. Und zwar wird dazu vom heutigen Datum die Nummer aus dem Array abgezogen also beim ersten Durchlauf 0 beim zweiten 1 usw. Das Datum wird dann zu einem String in deinem Format umgeformt und daran das _Tagessicherung.tar als String angehängt.
"$((get-date).AddDays(-$_).toString('yyyy-MM-dd'))_Tagessicherung.tar"
Als nächsten Schritt übergeben wir dieses Array aus Dateinamen via Pipe an ein sogenanntes Where-Object für das die Abkürzung ?{} ist, Powershell Programmierer mögens gerne kurz . Das Where-Object ist so etwas wie eine IF-Prüfung für die Objekte in der Pipeline. Es prüft die Bedingung die in ihm steht und wenn sie $True ist wird das aktuelle Objekt in der Pipeline (hier der Dateiname des Backups) in der Pipeline weitergereicht, ansonsten nicht.
?{!(Test-Path "D:\Backup\$_")}
So, nun haben wir also als Ergebnis der IF-Bedingung die Dateinamen die nicht im Backupverzeichnis vorkommen. Wenn also die Bedingung alle Dateien findet hat das Ergebnis der Bedingung keine Ausgabe, also ist sie $false und die Aktion in der IF-Schleife wird nicht ausgeführt. Bei mindestens einer fehlenden Datei gibt es ein Ergebnis und die Bedingung wird $true und die Mail wird verschickt.
Send-MailMessage -From 'user1@domain.de' -to 'user2@domain.de' -Subject 'Nicht alle Sicherungen vorhanden' -Body 'Es sind nicht alle Sicherungen der letzten 5 Tage vorhanden' -SmtpServer 'smtp.server.de' -Credential (New-Object PSCredential('USERNAME',(ConvertTo-SecureString 'PASSWORD' -AsPlainText -Force))) -UseSSL
http://ss64.com/ps/send-mailmessage.html
Zum Testen des Codes öffnest du eine Powershell ISE und kopierst ihn dort hinein, passt den Backup-Pfad in der Bedingung, sowie die Parameter von Send-Mailmessage an und drückst F5. Fertig.
Wie man das ganze dann als Skript speichert und ausführt siehe:
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 eine 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.
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"
.\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"
powershell.exe -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"
powershell.exe -command "&'C:\Pfad\Script.ps1' -par1 'Wert1' -par2 'Wert2'"
powershell.exe -command "&'C:\Pfad\Script1.ps1';&'C:\Pfad\Script2.ps1'"
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"Hoffe das hilft dir beim PS Einstieg etwas
Schönen 4ten Advent
Grüße Uwe
Und die wichtigste Regel der EDV lautet ja: Never touch a running system
But always be prepared for the future Ich hatte die PS damals an einem Wochenende drin, zumindest die wichtigsten Grundlagen, und das alles nur durch Lesen der Referenzmaterialien von Microsoft. ist zwar etwas trocken, doch lernst du damit komprimiert ziemlich viel und verpasst nichts.
Der Rest kommt von alleine durch einfaches stellen von Aufgaben.
Was viel hilft ist wenn du die häufig genutzten Klassen des .NET-Framework kennst denn darauf baut PS auf. Die CMDLets mit Ihren Parametern sind ja Pillepalle und lassen sich meist durch die Intellisense schon erahnen.