Lee Dailey provides a good pointer:
the usual way is to keep things in the $Var
and simply address the properties when needed. So, assign the call to a $Var
and get the value with $Var.ObjectID
.
That said, if you do want to store the object ID alone in a dedicated variable, simply access the .ObjectId
property on the object returned by Get-AzureAdUser
:
$userId = (Get-AzureAdUser -ObjectId '[email protected]').ObjectId
In a follow-up comment you mention arriving at:
$Var = Get-AzureAdUser -ObjectId "[email protected]" | Select ObjectId
However, this use of the Select-Object
cmdlet (whose built-in alias is select
) is virtually pointless, as this still returns a (new, custom) object that requires you to access its .ObjectId
property in order to retrieve the object ID value - and for that you could have just assigned the object returned by Get-AzureAdUser
directly to $Var
, as Lee suggests.
It is possible to use Select-Object
to extract a single property value, namely via the
-ExpandProperty <propertyName>
parameter:
$Var = Get-AzureAdUser -ObjectId '[email protected]' | Select -ExpandProperty ObjectId
However, the (...).ObjectId
syntax (dot notation) is not only more convenient, but also faster - and it even works on multiple objects (in PSv3+), in which case an array of values is returned (a feature called member enumeration).
In short, Select-Object -ExpandProperty
is only needed if you're processing very large collections that must be processed one by one in the pipeline.