当前位置: 首页 > 编程笔记 >

PowerShell小技巧之读取Windows产品密钥

邹海超
2023-03-14
本文向大家介绍PowerShell小技巧之读取Windows产品密钥,包括了PowerShell小技巧之读取Windows产品密钥的使用技巧和注意事项,需要的朋友参考一下

之前大多数人可能用过VBS读取Windows产品密钥的VBS脚本,VBS脚本通常都比较隐晦、难懂,今天忙里偷闲,随手写了一个用于读取Windows产品密钥的PowerShell脚本。

代码如下:


 =====文件名:Get-WindowsProductKey.ps1=====

function Get-WindowsProductKey([string]$computer)

{

$comments =@' author:fuhj(powershell#live.cn ,http://fuhaijun.com) example: Get-WindowsProductKey . '@ $reg = [WMIClass] ("\\" + $computer + "\root\default:StdRegProv") $values = [byte[]]($reg.getbinaryvalue(2147483650,"SOFTWARE\Microsoft\Windows NT\CurrentVersion","DigitalProductId").uvalue) $lookup = [char[]]("B","C","D","F","G","H","J","K","M","P","Q","R","T","V","W","X","Y","2","3","4","6","7","8","9") $keyStartIndex = [int]52; $keyEndIndex = [int]($keyStartIndex + 15); $decodeLength = [int]29 $decodeStringLength = [int]15 $decodedChars = new-object char[] $decodeLength $hexPid = new-object System.Collections.ArrayList for ($i = $keyStartIndex; $i -le $keyEndIndex; $i++){ [void]$hexPid.Add($values[$i]) } for ( $i = $decodeLength - 1; $i -ge 0; $i--)     {      if (($i + 1) % 6 -eq 0){$decodedChars[$i] = '-'}      else        {         $digitMapIndex = [int]0         for ($j = $decodeStringLength - 1; $j -ge 0; $j--)         {             $byteValue = [int](($digitMapIndex * [int]256) -bor [byte]$hexPid[$j]);             $hexPid[$j] = [byte] ([math]::Floor($byteValue / 24));             $digitMapIndex = $byteValue % 24;             $decodedChars[$i] = $lookup[$digitMapIndex];          }         }      } $STR = '' $decodedChars | % { $str+=$_} $STR }

Get-WindowsProductKey .

执行效果如下:

 类似资料:
  • 本文向大家介绍Powershell小技巧之获取MAC地址,包括了Powershell小技巧之获取MAC地址的使用技巧和注意事项,需要的朋友参考一下 在Powershell中获取MAC地址不是很难。这里就有一种方法: 我们面临的问题是要分类数据并格式化。未处理的信息是来自Getmac.exe输出的CSV数据,这里有一个技巧:跳过第一行来命名你喜欢的列(此时包涵了CSV的头),此时可以提供你自己独特的

  • 本文向大家介绍Powershell小技巧之复合筛选,包括了Powershell小技巧之复合筛选的使用技巧和注意事项,需要的朋友参考一下 当你分析文本日志或筛选不通类型的信息时,你通常要使用 Where-Object。这里有一个通用脚本来说明复合筛选:

  • 本文向大家介绍Powershell小技巧之使用WMI工具,包括了Powershell小技巧之使用WMI工具的使用技巧和注意事项,需要的朋友参考一下 WMI是一个强大的技术:只需要简单的指定一个WMI类名就能返回它类的所有实例: 你如何知道它有哪些类呢?这里有一款查找工具: 设置搜索条件后,代码将搜索出包含指定属性名的类(还可以通过通配符扩大搜索范围) 下面将找出所有包含“resolution”结尾

  • 本文向大家介绍Powershell小技巧之设置IE代理,包括了Powershell小技巧之设置IE代理的使用技巧和注意事项,需要的朋友参考一下 IE的代理设置位于注册表中:”HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings”下。关键键值为ProxyEnable和ProxyServer。所以通过更改注册表即可完成IE代

  • 本文向大家介绍PowerShell小技巧之发送TCP请求,包括了PowerShell小技巧之发送TCP请求的使用技巧和注意事项,需要的朋友参考一下 很多时候我们需要通过Socket发送特定的TCP请求给服务器的特定端口来实现探测服务器的指定端口所开启的服务。很多语言都有相应的方法实现上述需求,当然,PowerShell也不例外,比如我们要发送一个简单的http请求到指定的web服务器: GET /

  • 本文向大家介绍PowerShell小技巧之尝试ssh登录,包括了PowerShell小技巧之尝试ssh登录的使用技巧和注意事项,需要的朋友参考一下 在PSNet程序集中继续进行扩展,在$env:PSSpace/PSNet/TCPOp/下创建Invoke-SSHLogin.ps1脚本用于在传入指定ssh地址、用户名和密码后返回是否登录成功。 在$env:PSSpace/PSNet/下创建Lib目录用