¿Por qué Get-Date parece devolver objetos DateTime, pero el BinarySerializer indica que devuelve un PSObject?

Toma el @ simpTabla de picadill:

$data = @{
    First = 'Justin';
    Last = 'Dearing';
    StartDate = Get-Date '2002-03-23';
}

a clave StartDate parece contener unaFecha y hor.

C:\Users\zippy\Documents> $data.StartDate.GetType().FullName
System.DateTime

Sin embargo, si intento realizar una serialización binaria, recibo una excepción quejándose de que PSObject no es serializable.

$ms = New-Object System.IO.MemoryStream
$bf = New-Object System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
$bf.Serialize($ms, $data)
$ms.Close()

Throws:

DocumentsException calling "Serialize" with "2" argument(s): "Type 'System.Management.Automation.PSObject' in Assembly 'System.Management.Automation, Versio
n=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' is not marked as serializable."
At C:\Users\jdearing\AppData\Local\Temp\b8967f99-0a24-41f7-9c97-dad2bc288bd9.ps1:12 char:14
+ $bf.Serialize <<<< ($ms, $data)
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

Este mensaje desaparece y todo funciona si uso un reparto explícito a [DateTime] de esta manera:

$data = @{
    First = 'Justin';
    Last = 'Dearing';
    StartDate = [DateTime] (Get-Date '2002-03-23');
}

Así que Get-Date realmente no devuelve un DateTime, o es alguna otra rareza de PowerShell en el trabajo aquí.

Respuestas a la pregunta(4)

Su respuesta a la pregunta