Powershell Variable en question et de changer de format de date
J'ai une chose étrange qui se passe dans Powershell.
Voici le 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
Voici ce qui est affiché lorsque j'exécute ce
https://REDACTED:1338/REDACTED.asp?querysolution=Windows Server Backup&querylastbackuptime=05/07/2013 05:04:12
07/05/2013 05:04:12
Pourquoi powershell permutation de la date autour de quand elle est faite dans le cadre d'une autre variable, mais pas quand je l'ai sortie de la variable sur son propre?!
Vous devez vous connecter pour publier un commentaire.
C'est un cas particulier avec un casting
datetime
objet. Lorsque vous imprimez simplement la date sous la forme d'une chaîne à l'aide dewrite-host
, qui sera égal à l'exécution de$lastbackuptime.toString()
. Cette méthode utilise la culture de la vous êtes l'ordinateur. Dans mon cas, la culture de la Région des paramètres pour Windows est en Norvège, si je reçois le "européenne" dateformat:dd/mm/yyyy
.Toutefois, lorsque vous incluez
$lastbackuptime
à l'intérieur d'une chaîne, il effectue un cast pour unstring
-objet. En PowerShell(ou .Net), il a été décidé que lors de la coulée d'un datetime-objet, il doit utiliser un format standard pour le convertir en chaîne, de sorte que le code s'exécute de la même quelle que soit la culture de l'ordinateur a été configuré avec. C'est pourquoi casting vous donne le format AMÉRICAIN, tandis quetoString()
etWrite-Host
donne à "l'européenne" formatEx:
Pour spécifier le format de votre datetime doit être affiché, vous pouvez faire quelque chose comme ceci:
Lire plus ici
mm
(en minutes) au lieu deMM
(mois). Je le fixe que quelques minutes après que j'ai posté la réponse. J'ai juste oublié de fixer la sortie.Vérifier vos paramètres régionaux, plus précisément le Court de la Date & formats de Date Longue.
Sur mon système, si la Date est
MM/dd/yyyy
et et de Longue Date estdddd, MMMM dd,yyyy
. Ensuite, l'exécution d'une version simplifiée de votre exemple:Lorsqu'il est utilisé sur son propre, le format de Date Longue est utilisée dans le retour de la date, mais quand concaténé avec (ou étendu à l'intérieur) une autre chaîne de caractères le format de Date Courte est utilisé.