なんか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側で吐き出す値を修正したらしいです。とりあえず動作するようになりました。