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


Reply via email to