powershell (Get-WmiObject win32_physicalmedia) .serialnumber выходной шестнадцатеричный - PullRequest
1 голос
/ 27 января 2020

Когда я использовал (Get-WmiObject win32_physicalmedia).serialnumber, вывод был в шестнадцатеричном формате. Пример: 31323334353637383930. Затем я использовал код ниже

$pass=""
$t=(Get-WmiObject win32_physicalmedia).serialnumber
$t -split '(.{2})' |%{ if ($_ -ne "") { $pass+=[CHAR]([CONVERT]::toint16("$_",16))  }}
write host $pass

Вывод был: 1234567890. Проблема в том, что 1234567890 не является серийным номером - реальный серийный номер - 2143658709. Мне нужен скрипт, чтобы поменять число от $input "1234567890" до $output "214365768709".

Ответы [ 2 ]

0 голосов
/ 28 января 2020

Я думаю, что это называется формат «среднего порядка байтов», где каждые два байта инвертируются: средний порядок

Исходя из сообщения здесь: WMI Win32_PhysicalMedia SMART ID в Vista и 7 разрешений

0 голосов
/ 27 января 2020

это предполагает, что ваша строка SN является четным числом символов, и что действительное число просто переворачивает пары символов.

$InString = '1234567890'

$OutString = ''
foreach ($Index in 0..($InString.Length / 2))
    {
    $CurPos = $Index * 2
    $OutString += $InString[$CurPos + 1] + $InString[$CurPos]
    }

$OutString

выход = 2143658709

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...