Yeah PowerShell has/has a number of
oddball things like this.
You can use "$(Get-Date -f x)" where
the x can be any standard .net format code (d, G, etc).
Both of the following were thankfully
fixed in PS6+ as the defaults are much better now, but the ones I
always got snagged on with PowerShell 5 were:
- Export-Csv forgetting to specify
"-NoTypeInformation"
- Out-File without specifying
"-Encoding Ascii" (the default used to be Unicode, now it's
UTF8NoBOM)
What always intrigues me though is
observations that .net developers (vs sysadmins for example) often
approach using PS from an API perspective, obviously from knowing
the BCL API surface as we do so well. 😁
Conversely, sysadmin powershell will
often look like WSH/wscript that they're more used to.
e.g. for the timezones earlier, the
Powershell-y way is something like:
>
get-timezone -list | where BaseUtcOffset -eq '09:30:00' | select
DisplayName,SupportsDaylightSavingTime
DisplayName SupportsDaylightSavingTime
----------- --------------------------
(UTC+09:30) Adelaide True
(UTC+09:30) Darwin False
Kudos to the folks at Microsoft for
allowing each and any coding style to work regardless for everyone
under the tent, of course!
-Tony
On 23/06/2022 18:10, Richard Carde via
ozdotnet wrote:
I have no idea how widely known this is, but it annoyed
me for an hour or so.
PS C:\> (Get-Date).ToString()
23/06/2022 2:06:24 PM
PS C:\> "$(Get-Date)"
06/23/2022 14:06:33
Huh?
I know why there's a difference. Anyone been
stung by that before?
The implicit conversion does this:
PS C:\> (Get-Date).ToString($null,[System.Globalization.CultureInfo]::InvariantCulture)
06/23/2022 14:07:43
Regards,
RC