我正在为自定义应用程序的Azure AD用户扩展属性中存储时间戳。 我的扩展属性是String数据类型(可用的数据类型是String和Binary)。 我使用-format o来获取我的时间戳字符串:
[String]$thisTimestamp = (Get-Date -f o)
这给了我一个包含我的时间戳的字符串,格式如下:
2017-11-17T18:26:13.5537900+00:00
当我将此字符串值存储在我的AzureAD扩展属性中时,它似乎会进行String-DateTime-String转换,从而产生默认日期格式,如下所示:
Set-AzureADUserExtension -ObjectId $aadUser.ObjectId -ExtensionName $thisExtensionID -ExtensionValue $thisTimestamp
(Get-AzureADUserExtension -ObjectId $aadUser.ObjectId).get_item($thisExtensionID)
返回:17/11/2017 18:26:13
查看MS Graph Explorer中的存储值,它会正确存储为时间戳。但是,当我使用Get-AzureADUserExtension或Get-AzureADUser获取值并检查属性时,存储的值始终作为字符串返回,格式为modified:
((Get-AzureADUser -ObjectId $aadUser.ObjectId).extensionproperty).$thisExtensionID
返回:
17/11/2017 18:26:13
我有一个解决方法 - 在我的时间戳中添加一个尾随空格。这正确存储为字符串,并正确转换回DateTime。
[String]$thisTimestamp = (Get-Date -f o) + " "
Set-AzureADUserExtension -ObjectId $aadUser.ObjectId -ExtensionName $thisExtensionID -ExtensionValue $thisTimestamp
(Get-AzureADUserExtension -ObjectId $aadUser.ObjectId).get_item($thisExtensionID)
返回:2017-11-17T18:26:13.5537900+00:00
(带有尾随空格)
$testDateTime = Get-Date (Get-AzureADUserExtension -ObjectId $aadUser.ObjectId).get_item($thisExtensionID)
正确创建DateTime对象并返回:
17 November 2017 18:26:13
我觉得Get-AzureADUser cmdlet和Get-AzureADUserExtension(我假设它基于Get-AzureADUser)似乎在检索时干扰了字符串。这是一个错误,还是我做了stoopid的事情?