Комментарии 20
1. есть powershell
2. Для чего cp866? UTF-8 же, а не бНОПНЯ )
А так да, милый скрипт
2. Для чего cp866? UTF-8 же, а не бНОПНЯ )
А так да, милый скрипт
+2
1. На старых компах с ним могут быть сложности
2. Так консоль в винде такая.
2. Так консоль в винде такая.
0
для старого ПК разгон один — SSD
Для всего остального — HWInfo
Для всего остального — HWInfo
0
Реализовал на cmd и на PowerShell, см. обновление публикации…
0
На cmd скрипт отрабатывает быстрее, чем на PowerShell.
0
Как-то кратко и скомкано.
0
И зачем для модернизации IP-адрес?
0
Вы этот батник будете не в ручную набирать. Запускатьс флешки например. В чем проблема запустить HwInfo, тем более она portable?
0
Вот было бы неплохо выдавать еще и серийники всего, до чего можно дотянуться.
Вот несколько скриптов PS для получения сериников мамки и накопителей и ключа винды:
К сожалению, для оптических приводов он серийники не выдает. Даже вообще их не видит. Да и для некоторых старых HDD накопителей выдает какую-то километровую строчку. А у некоторых SSD серийник из этого скрипта не совпадает с напечатанными на этикетке — вот и думай, кто тут химичит.
Где-то были еще скрипты для получения более подробной инфы по процессору и серийников планок памяти — не нашел.
Вместо IP лучше давать MAC (ну или вместе).
Вместо текущего пользователя — дескриптор компа в сетевом окружении.
Ну вывод сделать более форматированным.
Вот несколько скриптов PS для получения сериников мамки и накопителей и ключа винды:
Получение серийных номеров накопителей
WScript.Echo GetSerialNumber()
Function GetSerialNumber()
Set oWMI = GetObject(«WinMgmts:»)
Set col = oWMI.InstancesOf(«Win32_DiskDrive»)
For Each obj In col
sAns = sAns & obj.Model & " — " & obj.SerialNumber & vbCrLf
Next
GetSerialNumber=sAns
End Function
Function GetSerialNumber()
Set oWMI = GetObject(«WinMgmts:»)
Set col = oWMI.InstancesOf(«Win32_DiskDrive»)
For Each obj In col
sAns = sAns & obj.Model & " — " & obj.SerialNumber & vbCrLf
Next
GetSerialNumber=sAns
End Function
К сожалению, для оптических приводов он серийники не выдает. Даже вообще их не видит. Да и для некоторых старых HDD накопителей выдает какую-то километровую строчку. А у некоторых SSD серийник из этого скрипта не совпадает с напечатанными на этикетке — вот и думай, кто тут химичит.
Получение серийного номера материнской платы
WScript.Echo GetSerialNumber()
Function GetSerialNumber()
Set oWMI = GetObject(«WinMgmts:»)
Set col = oWMI.InstancesOf(«Win32_BaseBoard»)
For Each obj In col
sAns = sAns & obj.Product & ": " & obj.SerialNumber & vbCrLf
Next
GetSerialNumber=sAns
End Function
Function GetSerialNumber()
Set oWMI = GetObject(«WinMgmts:»)
Set col = oWMI.InstancesOf(«Win32_BaseBoard»)
For Each obj In col
sAns = sAns & obj.Product & ": " & obj.SerialNumber & vbCrLf
Next
GetSerialNumber=sAns
End Function
Получение сведений об ОС Windows
Option Explicit
Dim strComputer, objWMIService, objItem, Caption, colItems
Set objWMIService = GetObject(«winmgmts:\\.\root\cimv2»)
Set colItems = objWMIService.ExecQuery(«Select * from Win32_OperatingSystem»,,48)
For Each objItem in colItems
Caption = objItem.Caption
Next
If InStr(Caption,«Windows») > 0 Then
Dim objshell,path,DigitalID, Result
Dim fil
Set objshell = CreateObject(«WScript.Shell»)
'Set registry key path
Path = «HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\»
'Registry key value
DigitalID = objshell.RegRead(Path & «DigitalProductId»)
Dim ProductName,ProductID,ProductKey,ProductData
'Get ProductName, ProductID, ProductKey
ProductName = «Product Name: » & objshell.RegRead(Path & «ProductName»)
fil = objshell.RegRead(Path & «ProductName»)
ProductID = «Product ID: » & objshell.RegRead(Path & «ProductID»)
ProductKey = «Installed Key: » & ConvertToKey(DigitalID)
ProductData = ProductName & vbNewLine & ProductID & vbNewLine & ProductKey
'Show messbox if save to a file
If vbYes = MsgBox(ProductData & vblf & vblf & «Save to a file?», vbYesNo + vbQuestion, «BackUp Windows Key Information») then
Save ProductData
End If
Else
MsgBox «Please run this script in Windows 8.x»
End If
'Convert binary to chars
Function ConvertToKey(Key)
Const KeyOffset = 52
Dim isWin8, Maps, i, j, Current, KeyOutput, Last, keypart1, insert
'Check if OS is Windows 8
isWin8 = (Key(66) \ 6) And 1
Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4)
i = 24
Maps = «BCDFGHJKMPQRTVWXY2346789»
Do
Current= 0
j = 14
Do
Current = Current* 256
Current = Key(j + KeyOffset) + Current
Key(j + KeyOffset) = (Current \ 24)
Current=Current Mod 24
j = j -1
Loop While j >= 0
i = i -1
KeyOutput = Mid(Maps,Current+ 1, 1) & KeyOutput
Last = Current
Loop While i >= 0
If (isWin8 = 1) Then
keypart1 = Mid(KeyOutput, 2, Last)
insert = «N»
KeyOutput = Replace(KeyOutput, keypart1, keypart1 & insert, 2, 1, 0)
If Last = 0 Then KeyOutput = insert & KeyOutput
End If
ConvertToKey = Mid(KeyOutput, 1, 5) & "-" & Mid(KeyOutput, 6, 5) & "-" & Mid(KeyOutput, 11, 5) & "-" & Mid(KeyOutput, 16, 5) & "-" & Mid(KeyOutput, 21, 5)
End Function
'Save data to a file
Function Save(Data)
Dim fso, fName, txt,objshell,UserName,Cur,Computer
Set objshell = CreateObject(«wscript.shell»)
Cur = CreateObject(«Scripting.FileSystemObject»).GetParentFolderName(WScript.ScriptFullName)
'Get current user name
UserName = objshell.ExpandEnvironmentStrings("%UserName%")
Computer = objshell.ExpandEnvironmentStrings("%computername%")
'Create a text file on desktop
fName = Cur & "\" & «KeyBackup» & ".txt"
Set fso = CreateObject(«Scripting.FileSystemObject»)
Set txt = fso.OpenTextFile(fName, 8, True)
txt.Writeline Computer
txt.Writeline UserName
txt.Writeline Data
txt.WriteBlankLines 1
txt.Close
End Function
Dim strComputer, objWMIService, objItem, Caption, colItems
Set objWMIService = GetObject(«winmgmts:\\.\root\cimv2»)
Set colItems = objWMIService.ExecQuery(«Select * from Win32_OperatingSystem»,,48)
For Each objItem in colItems
Caption = objItem.Caption
Next
If InStr(Caption,«Windows») > 0 Then
Dim objshell,path,DigitalID, Result
Dim fil
Set objshell = CreateObject(«WScript.Shell»)
'Set registry key path
Path = «HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\»
'Registry key value
DigitalID = objshell.RegRead(Path & «DigitalProductId»)
Dim ProductName,ProductID,ProductKey,ProductData
'Get ProductName, ProductID, ProductKey
ProductName = «Product Name: » & objshell.RegRead(Path & «ProductName»)
fil = objshell.RegRead(Path & «ProductName»)
ProductID = «Product ID: » & objshell.RegRead(Path & «ProductID»)
ProductKey = «Installed Key: » & ConvertToKey(DigitalID)
ProductData = ProductName & vbNewLine & ProductID & vbNewLine & ProductKey
'Show messbox if save to a file
If vbYes = MsgBox(ProductData & vblf & vblf & «Save to a file?», vbYesNo + vbQuestion, «BackUp Windows Key Information») then
Save ProductData
End If
Else
MsgBox «Please run this script in Windows 8.x»
End If
'Convert binary to chars
Function ConvertToKey(Key)
Const KeyOffset = 52
Dim isWin8, Maps, i, j, Current, KeyOutput, Last, keypart1, insert
'Check if OS is Windows 8
isWin8 = (Key(66) \ 6) And 1
Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4)
i = 24
Maps = «BCDFGHJKMPQRTVWXY2346789»
Do
Current= 0
j = 14
Do
Current = Current* 256
Current = Key(j + KeyOffset) + Current
Key(j + KeyOffset) = (Current \ 24)
Current=Current Mod 24
j = j -1
Loop While j >= 0
i = i -1
KeyOutput = Mid(Maps,Current+ 1, 1) & KeyOutput
Last = Current
Loop While i >= 0
If (isWin8 = 1) Then
keypart1 = Mid(KeyOutput, 2, Last)
insert = «N»
KeyOutput = Replace(KeyOutput, keypart1, keypart1 & insert, 2, 1, 0)
If Last = 0 Then KeyOutput = insert & KeyOutput
End If
ConvertToKey = Mid(KeyOutput, 1, 5) & "-" & Mid(KeyOutput, 6, 5) & "-" & Mid(KeyOutput, 11, 5) & "-" & Mid(KeyOutput, 16, 5) & "-" & Mid(KeyOutput, 21, 5)
End Function
'Save data to a file
Function Save(Data)
Dim fso, fName, txt,objshell,UserName,Cur,Computer
Set objshell = CreateObject(«wscript.shell»)
Cur = CreateObject(«Scripting.FileSystemObject»).GetParentFolderName(WScript.ScriptFullName)
'Get current user name
UserName = objshell.ExpandEnvironmentStrings("%UserName%")
Computer = objshell.ExpandEnvironmentStrings("%computername%")
'Create a text file on desktop
fName = Cur & "\" & «KeyBackup» & ".txt"
Set fso = CreateObject(«Scripting.FileSystemObject»)
Set txt = fso.OpenTextFile(fName, 8, True)
txt.Writeline Computer
txt.Writeline UserName
txt.Writeline Data
txt.WriteBlankLines 1
txt.Close
End Function
Где-то были еще скрипты для получения более подробной инфы по процессору и серийников планок памяти — не нашел.
Вместо IP лучше давать MAC (ну или вместе).
Вместо текущего пользователя — дескриптор компа в сетевом окружении.
Ну вывод сделать более форматированным.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Информация о компьютере: просто и быстро