Int64 对象类型长度
Int64 object type length
我是 powershell 的新手,所以如果有人能帮助我理解这种情况下的最佳实践,那就太好了:
我正在使用 Centrify Powershell 模块获取用户的 uid 属性。如果我输入
Get-CdmUserProfile -Zone "DN_NAME_HERE" | select name,uid
它returns以下:
markok 3252423756
markusa 32356514982
markusk 417
markusp 32187
我需要过滤掉 uid
长度。所以我尝试了
Get-CdmUserProfile -Zone "DN_NAME_HERE" | ? {($_.Uid).length -lt 6 } | select name,uid
但它不断返回长度超过 6 个字符的 uid
用户。
所以我试图找出每个 uid
:
的长度
Get-CdmUserProfile -Zone "DN_NAME_HERE" | %{($_.uid).length}
和
Get-CdmUserProfile -Zone "DN_NAME_HERE" | %{($_.uid).count}
但它returns 1
每个 uid
这显然不是真的。
所以我决定通过Get-CdmUserProfile -Zone "DN_NAME_HERE" | %{($_.uid).gettype()}
找出uid
属性的类型,对象类型是Int64 System.ValueType
我已经设法通过使用 tostring()
方法找到解决方法:
Get-CdmUserProfile -Zone "DN_NAME_HERE" | %{(($_.uid).tostring()).length}
它确实有效,但我不确定它是否是性能和整洁打字方面的最佳做法。有没有其他方法可以找出 int64
对象长度?
TL;DR
查找 int64 长度的最佳做法是什么?
你做得对,将它转换为字符串并获取长度。
如果您真的想要一种数学方法来获取 Integer
中的位数,您可以将 [Math]::Log10
函数与 [Math]::Truncate
函数一起使用:
$digitsLong = [Math]::Truncate( [Math]::Log10( $uid ) + 1 )
我是 powershell 的新手,所以如果有人能帮助我理解这种情况下的最佳实践,那就太好了:
我正在使用 Centrify Powershell 模块获取用户的 uid 属性。如果我输入
Get-CdmUserProfile -Zone "DN_NAME_HERE" | select name,uid
它returns以下:
markok 3252423756
markusa 32356514982
markusk 417
markusp 32187
我需要过滤掉 uid
长度。所以我尝试了
Get-CdmUserProfile -Zone "DN_NAME_HERE" | ? {($_.Uid).length -lt 6 } | select name,uid
但它不断返回长度超过 6 个字符的 uid
用户。
所以我试图找出每个 uid
:
Get-CdmUserProfile -Zone "DN_NAME_HERE" | %{($_.uid).length}
和
Get-CdmUserProfile -Zone "DN_NAME_HERE" | %{($_.uid).count}
但它returns 1
每个 uid
这显然不是真的。
所以我决定通过Get-CdmUserProfile -Zone "DN_NAME_HERE" | %{($_.uid).gettype()}
找出uid
属性的类型,对象类型是Int64 System.ValueType
我已经设法通过使用 tostring()
方法找到解决方法:
Get-CdmUserProfile -Zone "DN_NAME_HERE" | %{(($_.uid).tostring()).length}
它确实有效,但我不确定它是否是性能和整洁打字方面的最佳做法。有没有其他方法可以找出 int64
对象长度?
TL;DR
查找 int64 长度的最佳做法是什么?
你做得对,将它转换为字符串并获取长度。
如果您真的想要一种数学方法来获取 Integer
中的位数,您可以将 [Math]::Log10
函数与 [Math]::Truncate
函数一起使用:
$digitsLong = [Math]::Truncate( [Math]::Log10( $uid ) + 1 )