Format-List: sort properties by name

AFAIK, Format-List does not provide such an option.

For your particular example this should work:

$x | Select-Object A, B | Format-List

If the property set is not fixed/known then the procedure will be more tricky with use of Get-Member and some preprocessing making sorted parameter array for Select-Object.

EDIT:

Here it is (let's use $host instead of $x):

$host | Select-Object ([string[]]($host | Get-Member -MemberType Property | %{ $_.Name } | Sort-Object)) | Format-List

Christopher is right, Select-Object is not absolutely needed:

$host | Format-List ([string[]]($host | Get-Member -MemberType Property | %{ $_.Name } | Sort-Object))

Nothing wrong with the accepted answer, but a really quick-and-dirty option for a one-off—that doesn't require having the collection already in a variable—might be...

... | Format-List | Out-String -Stream | Sort-Object

...which does a sort on each line of the output of Format-List.

Note that any property values that go onto the next line will be broken (and probably appear at the top of the output), but this could be fixed by the slightly-less-memorable...

... | Format-List | Out-String -Stream -Width ([Int32]::MaxValue) | Sort-Object

...at the expense of column indentation.

Of course, all object/pipeline info is lost by that Out-String call, although—considering the same is true of Format-List—you probably aren't going to care by that point.