Powershell Variablen Problem und ändern Datum-format
Ich haben eine sehr seltsame Sache passiert in der Powershell.
Hier ist der code:
add-pssnapin windows.serverbackup
$wbs = Get-Wbsummary
$lastbackuptime = $wbs.lastBackupTime
$solution = "Windows Server Backup"
$surl = "https://REDACTED:1338/REDACTED.asp?querysolution=$solution&querylastbackuptime=$lastbackuptime"
write-host $surl
write-host $lastbackuptime
Hier ist, was ist output, wenn ich dieses
https://REDACTED:1338/REDACTED.asp?querysolution=Windows Server Backup&querylastbackuptime=05/07/2013 05:04:12
07/05/2013 05:04:12
Warum powershell-swapping das Datum um, wenn Sie als Teil einer anderen variable, aber nicht, wenn ich die Ausgabe der Variablen auf Ihre eigene?!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ein besonderer Fall mit casting ein
datetime
Objekt. Wenn Sie drucken Sie einfach das Datum als string mitwrite-host
, die wird gleich ausgeführt$lastbackuptime.toString()
. Diese Methode verwendet die Kultur, Sie sind computer. In meinem Fall, die Kultur in der Region-Einstellungen für Windows ist Norwegen, so bekomme ich den "europäischen" Standard:dd/mm/yyyy
.Jedoch, wenn Sie
$lastbackuptime
im inneren ein string ist, führt cast zu einemstring
-Objekt. In der PowerShell(oder .Net) es wurde beschlossen, dass beim Gießen ein datetime-Objekt, es sollte ein standard-format zu konvertieren zu einem string, so dass der code ausgeführt würde, die gleiche, egal, welche Kultur der computer so konfiguriert wurde, mit. Das ist, warum casting gibt Sie dem US-format, währendtoString()
undWrite-Host
gibt die "europäischen" formatEx:
Angeben, das format Ihrer datetime angezeigt werden sollen, können Sie etwas wie das hier tun:
Lesen Sie mehr hier
mm
(Minuten) stattMM
(Monat). Ich fest, dass ein paar Minuten nachdem ich gepostet die Antwort. Ich vergaß zu beheben, die Ausgabe.Überprüfen Sie Ihre regionalen Einstellungen, speziell das Kurze Datum & Lange Datumsformate.
Auf meinem system, Kurz Datum
MM/dd/yyyy
und und Lange Datum istdddd, MMMM dd,yyyy
. Dann läuft eine vereinfachte version von deinem Beispiel:Wenn verwendet, auf seine eigene, das Lange Datumsformat verwendet wird, bei der Rücksendung das Datum, aber wenn verkettet mit (oder erweiterte innen) eine andere Zeichenfolge, die das Kurze Datumsformat verwendet.