PowerShell Get-AzureADUser cmdlet执行不需要的字符串转换

时间:2017-11-17 18:57:32

标签: string powershell datetime azure-active-directory string-conversion

我正在为自定义应用程序的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的事情?

0 个答案:

没有答案
相关问题