ComradG
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Free_Soft сказать по-правде, то нагорожено в тамошнем сценарии, на которую была ссылка, ой как много левого! дядя полез в WMI, - зачем лезть в такие дебри, когда можно просто использовать PSPath, при условии, что требуется извлечь всего лишь серийник винды, понятия не имею?! так что я переписал код, сделав его более компактным и удобочитаемым: Код: function Get-SerialNumber { $regVal = Get-ItemProperty $regDir.PSPath $arrVal = $regVal.DigitalProductId $arrBin = $arrVal[52..66] $arrChr = "B", "C", "D", "F", "G", "H", "J", "K", "M", "P", "Q", "R", ` "T", "V", "W", "X", "Y", "2", "3", "4", "6", "7", "8", "9" for ($i = 24; $i -ge 0; $i--) { $k = 0; for ($j = 14; $j -ge 0; $j--) { $k = $k * 256 -bxor $arrBin[$j] $arrBin[$j] = [math]::truncate($k / 24) $k = $k % 24 } $strKey = $arrChr[$k] + $strKey if (($i % 5 -eq 0) -and ($i -ne 0)) { $strKey = "-" + $strKey } } $strKey } $regDir = Get-Item "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" $key_1 = Get-SerialNumber $regDir = Get-ChildItem HKLM:\SOFTWARE\Microsoft\Office\12.0\Registration $key_2 = Get-SerialNumber Write-Output "OS : $key_1" Write-Output "MS Office: $key_2" | в примере также показано, как получить ключ 2007 офиса, при этом в отличие от батника не нужно дрюкаться с ID установщика. Относительно же прочих мелкософтовских продуктов, таких как 2010 офис, полагаю, додумать можно самостоятельно. |