Powershell-将使用PSObject创建的新对象转换为数字或整数

Powershell-将使用PSObject创建的新对象转换为数字或整数,powershell,int,new-object,Powershell,Int,New Object,我有一个脚本,它使用API从我们的MDM中提取关于电话设备的数据。它创建了一个包含许多列的.csv文件。IMEI列显示为(例如)3.343434+14,而不是显示3343434245678912345。有人能帮我演示一下如何在.csv文件中正确地输出这个输出吗?我可以在事后操纵列属性,但更希望它是正确的。当我真的希望它是一个数字/整数时,它的输出似乎是一般的 我不知道在哪里可以输入[int](如果这是修复此问题所需的) 我希望.cvs列显示整个IMEI编号,并且没有小数或被截断。我无法复制您的问

我有一个脚本,它使用API从我们的MDM中提取关于电话设备的数据。它创建了一个包含许多列的.csv文件。IMEI列显示为(例如)3.343434+14,而不是显示3343434245678912345。有人能帮我演示一下如何在.csv文件中正确地输出这个输出吗?我可以在事后操纵列属性,但更希望它是正确的。当我真的希望它是一个数字/整数时,它的输出似乎是一般的

我不知道在哪里可以输入[int](如果这是修复此问题所需的)


我希望.cvs列显示整个IMEI编号,并且没有小数或被截断。

我无法复制您的问题,但我想展示实现您目标的正确方法:

# assumption: $response is the result of some REST API call using `Invoke-RestMethod`
# `Invoke-RestMethod` will automatically turn xml/json responses into objects
$response = [pscustomobject]@{
    Device = [pscustomobject]@{
        SerialNumber     = 'abc123'
        PhoneNumber      = '+18005551234'
        Ownership        = 'UNIQUEID'
        EnrollmentStatus = $true
        ComplianceStatus = $false
        UserName         = 'USERID'
        AssetNumber      = 123456
        LastSeen         = '2019-03-29T12:00:00'
        Imei             = 334343412345678912345
    }
}

$response.Device | Select-Object -Property @(
    @{
        Name       = 'Serial Number'
        Expression = {$_.SerialNumber}
    }
    @{
        Name       = 'Phone Number'
        Expression = {$_.PhoneNumber}
    }
    @{
        Name       = 'IMEI'
        Expression = {$_.Imei}
    }
    @{
        Name       = 'Ownership'
        Expression = {$_.Ownership}
    }
    @{
        Name       = 'Enrollment Status'
        Expression = {$_.EnrollmentStatus}
    }
    @{
        Name       = 'Compliance Status'
        Expression = {$_.ComplianceStatus}
    }
    @{
        Name       = 'User'
        Expression = {$_.UserName}
    }
    @{
        Name       = 'Asset Number'
        Expression = {$_.AssetNumber}
    }
    @{
        Name       = 'Last Seen Date'
        Expression = {$_.LastSeen}
    }
) | Export-Csv -Path C:\Temp\test.csv -NoTypeInformation


请参阅:on
-Property
了解技术说明。您为什么要做这些额外的工作
$response.Device |导出Csv…
如果需要列具有特定名称,请使用
选择对象的文档中的计算属性
。|选择Object@{N='User';L={$\u.UserName}}}Export…
最后,您的代码示例缺少问题的关键部分:csv转换。感谢您提供的信息,我确实错误地忽略了使用Export csv-Path$Path-NoTypeInformation的转换。我对任何编码都很陌生,正在尝试学习OTJ。上面显示的是哈希表的示例吗?我也不会导出.csv,直到一些foreach语句对其他数组进行了其他工作之后才导出。我不确定这是否重要;这是一个使用哈希表作为属性来计算结果对象属性的示例。为什么不直接在“[PScustomObject]@{'Serial Number'='abc123';…'”@LotPings中使用适当的名称呢?我正在模拟他们的响应对象输出,该输出来自API。这是一个独立的答案,不需要访问他们的API
# assumption: $response is the result of some REST API call using `Invoke-RestMethod`
# `Invoke-RestMethod` will automatically turn xml/json responses into objects
$response = [pscustomobject]@{
    Device = [pscustomobject]@{
        SerialNumber     = 'abc123'
        PhoneNumber      = '+18005551234'
        Ownership        = 'UNIQUEID'
        EnrollmentStatus = $true
        ComplianceStatus = $false
        UserName         = 'USERID'
        AssetNumber      = 123456
        LastSeen         = '2019-03-29T12:00:00'
        Imei             = 334343412345678912345
    }
}

$response.Device | Select-Object -Property @(
    @{
        Name       = 'Serial Number'
        Expression = {$_.SerialNumber}
    }
    @{
        Name       = 'Phone Number'
        Expression = {$_.PhoneNumber}
    }
    @{
        Name       = 'IMEI'
        Expression = {$_.Imei}
    }
    @{
        Name       = 'Ownership'
        Expression = {$_.Ownership}
    }
    @{
        Name       = 'Enrollment Status'
        Expression = {$_.EnrollmentStatus}
    }
    @{
        Name       = 'Compliance Status'
        Expression = {$_.ComplianceStatus}
    }
    @{
        Name       = 'User'
        Expression = {$_.UserName}
    }
    @{
        Name       = 'Asset Number'
        Expression = {$_.AssetNumber}
    }
    @{
        Name       = 'Last Seen Date'
        Expression = {$_.LastSeen}
    }
) | Export-Csv -Path C:\Temp\test.csv -NoTypeInformation