なんかAzure PowerShellのGet-AzureVMとかGet-AzureDeploymentとかで得られる応答の一部要素(PersistentVMDowntimeのEndTime)でDateTime.MaxValueなISO8601形式の値(9999-12-31T23:59:59Z)が入ってるようで、こいつを日本みたいなUTCにプラスするタイムゾーン圏内でDateTime.Parseしようとして例外吐いてるみたいです。
> get-azurevm get-azurevm : The DateTime represented by the string is out of range. At line:1 char:1 + get-azurevm + ~~~~~~~~~~~ + CategoryInfo : CloseError: (:) [Get-AzureVM], FormatException + FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS.GetAzureVMCommand
仮想マシンをシャットダウンしたり再起動したりすると、EndTimeの値がまともな値になるのかちゃんと動作するようです。いやいや。。。
Management API側の挙動が変わったのかなー?(こんな値入ってたっけ?)という気がしますが、仮想マシンの再起動とかフザケンナという人はAzure PowerShellを実行するPCのタイムゾーンをUTCとかPSTにして凌ぎましょう。(なんとなくMSには報告済み)
DateTimeOffset使えば問題なさげだけど。
D:\> [System.DateTime]"9999-12-31T23:59:59Z" Cannot convert value "9999-12-31T23:59:59Z" to type "System.DateTime". Error: "The DateTime repres ented by the string is out of range." At line:1 char:1 + [System.DateTime]"9999-12-31T23:59:59Z" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [], RuntimeException + FullyQualifiedErrorId : InvalidCastParseTargetInvocationWithFormatProvider D:\> [System.DateTimeOffset]"9999-12-31T23:59:59Z" DateTime : 9999/12/31 23:59:59 UtcDateTime : 9999/12/31 23:59:59 LocalDateTime : 9999/12/31 23:59:59 Date : 9999/12/31 0:00:00 Day : 31 DayOfWeek : Friday DayOfYear : 365 Hour : 23 Millisecond : 0 Minute : 59 Month : 12 Offset : 00:00:00 Second : 59 Ticks : 3155378975990000000 UtcTicks : 3155378975990000000 TimeOfDay : 23:59:59 Year : 9999
やれやれです。
2015.02.17 9:56 追記
Management REST API側で吐き出す値を修正したらしいです。とりあえず動作するようになりました。