Powershell - конвертировать новый объект, созданный с помощью PSObject, в число или целое число
У меня есть скрипт, который использует API для извлечения данных из нашего MDM о телефонных устройствах. Создает файл.csv со многими столбцами. Столбец IMEI отображается как (например) 3.343434+14 вместо 334343412345678912345. Может кто-нибудь помочь мне показать, как правильно выводить эти данные в файл.csv? Я могу манипулировать свойствами столбца после факта, но, скорее всего, он получился правильным. Похоже, что вывод идет как общий, когда я действительно хочу, чтобы это было число / целое число.
Я не могу понять, где можно ввести [int] (если это даже то, что требуется, чтобы это исправить).
$data = $response.Device
$data | foreach {
$serial = $_.SerialNumber
$phone = $_.PhoneNumber
$ownership = $_.Ownership
$enrollstat = $_.EnrollmentStatus
$compliant = $_.ComplianceStatus
$user = $_.UserName
$asset = $_.AssetNumber
$getlast = $_.LastSeen
$imei = $_.Imei
$lastdate = [DateTime]$getlast
try{$lastdate = Get-Date $getlast}
catch{write-host "NULL Date $serial"}
$object = New-Object -TypeName PSObject
$object | Add-Member -Name 'Serial Number' -MemberType NoteProperty -Value $serial
$object | Add-Member -Name 'Phone Number' -MemberType Noteproperty -Value $phone
$object | Add-Member -Name 'IMEI' -MemberType NoteProperty -Value $imei
$object | Add-Member -Name 'Ownership' -MemberType Noteproperty -Value $ownership
$object | Add-Member -Name 'Enrollment Status' -MemberType Noteproperty -Value $enrollstat
$object | Add-Member -Name 'Compliance Status' -MemberType Noteproperty -Value $compliant
$object | Add-Member -Name 'User' -MemberType Noteproperty -Value $user
$object | Add-Member -Name 'Asset Number' -MemberType Noteproperty -Value $asset
$object | Add-Member -Name 'Last Seen Date' -MemberType NoteProperty -Value $lastdate
Я хотел бы, чтобы столбец.cvs показывал весь номер IMEI и не имел десятичных знаков и не был усечен.
1 ответ
Мне не удалось воспроизвести вашу проблему, но я хотел продемонстрировать правильный способ достижения вашей цели:
# 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