Pet7
-
Gesamte Inhalte
17 -
Registriert seit
-
Letzter Besuch
Beiträge erstellt von Pet7
-
-
Hallo und guten Abend,
ich benötige Hilfe.
Gibt es die Möglichkeit nach geöffneten Dateien zu filtern.
z.B. get-childitem c:\windows\ (ich möchte alle Dateien die durch eine Anwendung oder User geöffnet sind filtern).
Vielen Dank im Voraus.
Pet7 :)
-
Vielen Dank für die schnelle Antwort! Funktioniert.
-
Hallo und guten Abend,
habe ein Problem und erbitte Hilfe.
ich habe in einer Variablen ($_) einen Dateinamen, möchte gerne wissen ob
im Dateinamen Zahlen (0-9) enthalten sind z.B. (meine_textdatei_145.txt).
Für schnelle Hilfe bedanke ich mich bereits jetzt.
Freundliche Grüße
pet7 ;)
-
Danke für die schnelle und erfolgreiche Antwort.
Pet7
-
Hallo.
ich benötige Hilfe.
Habe versucht mit dem nachfolgenden Code eine Datei per Powershell aus dem Internet downloaden, was zwar funktioniert, aber nicht das ist was ich wollte.
Hier der Code:
$url = "http://www.xxxxxxxxxx.de/statistik/statistikyyyyyyyyyyy.php?open=zinsen&func=row&tr=xxxxxx"
$dst = "U:\FTHost\RZ\Import_xxxxxxxxxxxxxx\yyyyyyyyy.csv"
$obj = new-object System.Net.WebClient
$obj.DownloadFile($url,$dst)
if ( !$? ) { Write-host "Fehler: $ERROR[0]";exit 1 }
Wenn ich mir die Datei anschaue habe ich folgenden Inhalt:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML lang="de">
<head>
Die Datei die ich runterladen wollte ist eine CSV-Datei.
PS-Version = 2.0
Bitte um Hilfe, bin noch Anfänger! Danke im voraus.
-
danke.
Pet7
-
ok, bin noch Neuling, man möge es mir verzeihen.
Pet7
-
danke für die Antwort.
Pet7
-
Hallo an alle Profis,
möchte gerne PowershellScripting V 2.0 erlernen und suche dafür ein geeignetes Buch, möglichst aber in deutscher Sprache.
Vielen Dank im Voraus.
Pet7
-
Noch ne Möglichkeit für die ps1-Datei:
Copy-Item 'C:\Temp\gibtsnicht.txt' 'c:\Temp\a' -ErrorAction "Stop" -ErrorVariable $err exit $err
Batch, wie Bernd beschrieben hat.
Die ganzen $-Variablen braucht Du in der Batch überhaupt nicht!
Hallo,
habe es ausprobiert, hat funktioniert.
Ich möchte es auch verstehen, deshalb noch die Frage:
In der $err steht der Returncode der per exit $err an die Variable %errorlevel% übergeben wird - ist das korrekt?
Danke.
Gruß Pet7
-
Hallo Pet7,
ich fasse mal zusammen:
Du startest aus einem Batchfile heraus ein Powershell Skript. In dem PS Skript führst Du Befehle aus, z.B. kopieren, die evtl. schief gehen können. In Abhängigkeit dessen willst Du in Deinem Batchfile mit Hilfe von %errorlevel% darauf reagieren.
CMD Test-Batch "test.bat" (wie in dem Link von cybquest beschrieben):
@echo off powershell -noprofile -command "& {"d:\Test\test.ps1"; exit $Lastexitcode}" echo Rueckgabewert: %errorlevel%
Powershell Test-Skript "test.ps1":
$ErrorActionPreference = 'Stop' trap { "Ein Fehler ist passiert" exit 5 } Copy-Item 'C:\Temp\gibtsnicht.txt' 'c:\Temp\a'
Die Variable $ErrorActionPreference muss auf Stop gestellt werden damit der Fehler nicht von cmdlet selbst sondern von der Trap behandelt wird. Das gilt dann für alle cmdlets. Alternativ kannst du beim jeweiligen cmdlet auch den Parameter -Erroraction 'stop' anhängen.
In der Trap wird das Skript mit dem Exitcode, im Beispiel 5, verlassen.
Hoffe das hilft Dir
Gruß
Bernd
Hallo Bernd,
erst mal vielen Dank für die Antwort.
Werde das jetzt mal ausprobieren.
Verstehe ich das richtig, dass in jeder Batchdatei dann die Variable
$ErrorActionPreference entsprechend gesetzt werden muß?
Was ist mit den Variablen $Error + $?, kann ich die dafür nicht verwenden?
Vorab schon Danke.
Gruß
Pet7
-
Schau mal hier:
Microsoft und Umwelt : Windows PowerShell Exit Codes: wie nutzen?
Wäre es nicht eleganter, einfach alles per Powershell zu erledigen, statt mit Batch plus Powershell?
Hallo Cybquest,
habe mir die Seite mal angeschaut.
Bei mir funktioniert das nicht!
Hier der Inhalt meiner Script-Datei H:\e1.ps1 :
Copy-Item c:\ps\e12.txt c:\ps\a2.txt
(die Datei e12.txt gibt es nicht!)
Hier der Aufruf an der Console:
H:\>powershell -command "& { H:\e1.ps1;exit $Lastexitcode}"
und hier die Ausgabe des Kommandos:
H:\>echo %errorlevel%
0
H:\>powershell -command "& { H:\e1.ps1;exit $Lastexitcode}"
Copy-Item : Cannot find path 'C:\ps\e12.txt' because it does not exist.
At H:\e1.ps1:1 char:10
+ Copy-Item <<<< c:\ps\e12.txt c:\ps\a2.txt
+ CategoryInfo : ObjectNotFound: (C:\ps\e12.txt:String) [Copy-Item], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand
H:\>echo %errorlevel%
0
Ich verstehe es nicht.
Gruß Pet7
-
Hallo Pet7,
mit Powersell geht das auf jeden Fall:
1. Kannst Du alles was du im Batch aufrufst auch direkt in Powershell aufrufen z.B. robocopy.exe und dann mit $Lastexitcode arbeiten
2. Kannst Du die Variable $? aus werten die True zurückgibt wenn der Letzte Befehl erfolgreich war
3. Kannst Du $error auswerten
4. Kannst Du sog. Traps oder Try-Catch Blöcke (ab PS V2.0) verwenden um Fehler abzufangen bzw. darauf zu reagieren
Wenn Du deinen Code mal reinstellst kann ich sicher auch konkreter werden.... .
Bruß
Bernd
PS: Schau mal bei xxxxxxx rein
Hallo Bernd,
danke für die Antwort.
zur Zeit läuft der Job wie folgt:
Inhalt der Batchdatei:
copy Quelldatei Zieldatei
if %errorlevel% ne 0 set retcode=%errorlevel%
#bei %retcode% ungleich 0 wird dann zum Fehlerausgang gesprungen und keine Folgeverarbeitung angestoßen
Künftig möchte ich den Code in eine Datei copy.ps1 schreiben.
Diese wird dann wie folgt aus einer Batchdatei gestartet:
cmd.exe:
powershell -name C:\copy.ps1
Anschließend muß die Variable %retcode% entsprechend versorgt werden.
set retcode= wie auch immer.
Gruß
Pet7
-
Schau mal hier:
Microsoft und Umwelt : Windows PowerShell Exit Codes: wie nutzen?
Wäre es nicht eleganter, einfach alles per Powershell zu erledigen, statt mit Batch plus Powershell?
Hallo Cybquest,
auch dir erstmal danke.
Es muß über die Batch-Datei laufen!
Ich glaube das funktioniert so nicht.
Habe gelesen dass die Variable $lastexitcode nur für externe Programme gilt.
Wenn ich z.B. ein Copy-Commando verwende und der Pfad ist fehlerhaft wird die Variable nicht gesetzt.
Werde das aber alles nochmal in Ruhe überprüfen.
Gruß Pet7
-
Hallo,
In der Powershellhilfe steht sehr viel dazu
get-help about_CommonParameters
z.B. unter -Erroraction
Evtl. findest du hier auch was
PowerShell Preference Variables /CommonParameters - PowerShellPraxis.de
Darüber wie man PS-skripte startet, findest du hier gute Infos
Running Windows PowerShell Scripts
cu
blub
Hallo blub,
erst mal danke für die schnelle Antwort.
Habe die eine oder andere Seite zu diesem Thema im Web schon ausfindig gemacht. Nur ist es nicht so einfach das umzusetzen.
Da ich das PS-Script aus einer Windows-Batchdatei starte muß ich bei einem Fehler der im PS-Script auftaucht die Variable %errorlevel% setzen damit ich richtig auf die Folgeverarbeitung reagieren kann.
Danke schon mal.
Pet7
-
Hallo,
bin neu hier und möchte mich gerne in Powershell einarbeiten.
Ich suche eine Lösung um Fehler im Script abzufangen und darauf zu reagieren. Wenn im Script ein Fehler auftritt soll das Script abbrechen und einen Fehlerschalter setzen sodass eine Folgeverarbeitung nicht anläuft.
Ich möchte ein Powershellscript in einer Batchdatei aufrufen.
Z.Zt. wird der Errorlevel gesetzt und abgefragt, so können Folgejobs (Batch)
weiterlaufen oder blockiert werden.
Für eine verständliche (Anfänger) Lösung bin ich sehr dankbar.
Pet7:)
Powershell
in Windows Forum — Scripting
Geschrieben
danke - ich schaue es mir mal an.
pet7