Bernd W
-
Gesamte Inhalte
9 -
Registriert seit
-
Letzter Besuch
Beiträge erstellt von Bernd W
-
-
Hallo,
hast Du dir die Parameter /mon und /mot beim robocopy angeschaut?
Vielleicht ist das was für dein Anliegen
-
$ComputerModell = Get-WmiObject Win32_ComputerSystemProduct | Select-Object Name
switch ($ComputerModell.Name.Trim()){
"Latitude D620" {"Es wurde ein Dell Latitude D620 erkannt. Hier den Code zu verbinden des Laufwerks einfügen"}
default {"keins erkannt"}
}
-
-
Hallo,
wie wärs mit Powershell Script?
$NummerTag = (Get-Date).DayOfWeek.value__ if ($NummerTag -eq 1) { Write-Host "Es ist der $NummerTag. Tag der Woche = Montag" } else { Write-Host "Nicht Montag" }
Gruß
Bernd
-
@Cybquest: Ich hab'a auch noch mal getestet. Es sit so wie ich schon geschrieben hatte. Vielleicht liegt's an der Umgebung Win XP Powershell 2.0 - wie auch immer... die eigentliche Frage war ja prinzipiell beantwortet.
Errorvariable: Es ist definitiv per Definition dass es nur funktioniert wenn sie ohne das Dollarzeichen angegeben wird.
Bsp:
# Korrekter Befehl dir C:\gibtsnicht -ErrorVariable MeinFehler # Variableninhalt ausgeben $meinFehler #Inhalt von $MeinFehler Get-ChildItem : Der Pfad "C:\gibtsnicht" kann nicht gefunden werden, da er nicht vorhanden ist. Bei Zeile:1 Zeichen:4 + dir <<<< C:\gibtsnicht -ErrorVariable MeinFehler + CategoryInfo : ObjectNotFound: (C:\gibtsnicht:String) [Get-ChildItem], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand # Variable leeren $MeinFehler = $null # Falscher Befehl dir C:\gibtsnicht -ErrorVariable [color="Red"][b]$[/b][/color]MeinFehler # Variableninhalt ausgeben $meinFehler #Inhalt von $MeinFehler (Es wird kein Inhalt ausgegeben)
Gruß
Bernd
-
Hallo Cybquest,
die Zuweisung der Fehlervariable im Cmdlet muss immer ohne Dollar-Zeichen erfolgen sonst tut das nicht!
Bsp.: -ErrorVariable err
Das der Wert (die Fehlermeldung als Array) als Rückgabewert geeignet ist bzw. funktioniert glaube ich ehrlich gesagt nicht. Hast Du das getestet?
Ich hab leider jezt keine Zeit mehr.
Gruß
Bernd
-
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 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 xxxx rein
[edit]
Links bitte nur, wenn Sie konkret der Problemlösung des To's dienen, nicht um deine Seite zu promoten
Danke für dein Verständnis
blub
Powershell: Anzahl der AD User in einer OU auslesen
in Windows Forum — Scripting
Geschrieben
Hallo MoC88,
select-object ist genau der richtige Befehl dafür.
Verwende den Parameter -ExpandProperty (statt -Property)