Jump to content

absolute Variable aus get-date


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben (bearbeitet)

Hallo!

 

ich hab gerade ein kosmetisches Problem. Meine Rechnung für die Differenz zweier Tage ergibt einen negativen Wert.

Der wert soll mir zeigen ob der Mitarbeiter schon existiert oder wann er anfängt. Ich hätte die Ausgabe aber gern als absoluten Wert.

 

 

Hier das Skript:

$Benutzer.Beginn kommt in der Form 01.01.2020

# Für jeden Datensatz im CSV            
foreach ($Benutzer in $CSVImport)
{
if ($Benutzer.Beginn)
   {
   $a = (Get-Date $benutzer.Beginn) - (get-date)   
   
   if ($a -le 0)
   {
   write-Host 'Der Mitarbeiter' $Benutzer.Fullname 'ist seit:'  
   '{0:N0} Tage(n) beschäftigt.' -f $a.TotalDays
   }
   else
   {
   write-Host 'Der Mitarbeiter' $Benutzer.Fullname 'wird in:'  
   '{0:N0} Tage(n) beginnen.' -f $a.TotalDays
   }
   }
}

 

 

bearbeitet von nutzer123456
Geschrieben (bearbeitet)
 {
   write-Host 'Der Mitarbeiter' $Benutzer.Fullname 'ist seit:'  
   '{0:N0} Tage(n) beschäftigt.' -f [math]::abs($a.TotalDays)
   }

das funktioniert super.

 

Bekomm ich diese Ausgabe in eine Zeile. Wenn ich $Benutzer.fullname ohne write-Host verwende erkennt er das nicht als Variable.

Und in Writehost funktioniert-f nicht.

bearbeitet von nutzer123456
Geschrieben (bearbeitet)
$a = 'Der Mitarbeiter' $Benutzer.Fullname 'ist seit: {0:N0} Tage(n) beschäftigt.' -f [math]::abs($a.TotalDays)

das erzeugt ein unerwartetes Token bei $benutzer.fullname, aber wenn ich es teile funktioniert es.

 $a = '{0:N0} Tage(n) beschäftigt.' -f [math]::abs($a.TotalDays)
   write-Host 'Der Mitarbeiter' $Benutzer.Fullname 'ist seit:' $a

 

Eine Frage hätte ich noch kann ich $a.totaldays auch in ein Ausgabe formatieren die das in Jahre, Monate und Tage teilt.

bearbeitet von nutzer123456
Geschrieben
{
   $a = 'Der Mitarbeiter ' + $($Benutzer.Fullname) + 'ist seit: {0:N0} Tage(n) beschäftigt.' -f [math]::abs($a.TotalDays)
   $A | write-Host  
   }

Ich hab das nochmal mit den + angepasst und jetzt ist es schön.

Vielen Dank, wieder was gelernt.

 

Wegen der Ausgabe guck ich mal rum ob sich was finden lässt.

Geschrieben (bearbeitet)
  Am 6.8.2020 um 13:10 schrieb nutzer123456:

Schöner wäre aber :

 

Der Mitabeiter max, Mustermann ist bereits 1 Jahr, 2 Monate und 5 Tage beschäftitg.

Mehr  

Ich hab mal für Dich gesucht und etwas einigermaßen Passendes gefunden:

$start = Get-Date '1.4.2001'
$span = [datetime]::Now - $start
$dauer = New-Object DateTime -ArgumentList $span.Ticks

Write-Host "Der Mitarbeiter ist seit $($dauer.Year - 1) Jahren, $($dauer.Month - 1) Monaten und $($dauer.Day) Tagen beschäftigt"

#oder

"Der Mitarbeiter ist seit {0,2} Jahren, {1,2} Monaten und {2,2} Tagen beschäftigt" -f $($dauer.Year - 1), $($dauer.Month - 1), $($dauer.Day)

Inspiriert hiervon:  StackOverflow - Powershell - Getting a persons age.

 

Wenn Du noch ein oder zwei if - Bedingungen drumrum baust, bekommst Du auch noch die unschönen Null-Werte weg.  ... sieht ja n' bissl doof aus, wenn da steht "Der Mitarbeiter ist seit 0 Jahren, 0 Monaten und 20 Tagen beschäftigt"  ;-) 

bearbeitet von BOfH_666
Geschrieben
  Am 6.8.2020 um 15:23 schrieb nutzer123456:

Woran liegt ds hier das Jahren,  und Monate und nicht in "" stehen müssen?

Mehr  

Oooops ...  eine kleine Nachlässigkeit beim Hin- und Her-Kopieren ... ich hab's korrigiert.  ... und wenn Du es "schön ausgerichtet" ausgeben möchtest, kannst Du den Format-Operator "-f" verwenden und so die Ausgabe quasi Zeichen-genau formatieren.

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...