也许有用的,
一个函数
function Get-SQLserverKey {
param ($targets = ".")
$hklm = 2147483650
$regPath = "SOFTWARE\Microsoft\Microsoft SQL Server\100\Tools\Setup"
$regValue1 = "DigitalProductId"
$regValue2 = "PatchLevel"
$regValue3 = "Edition"
Foreach ($target in $targets) {
$productKey = $null
$win32os = $null
$wmi = [WMIClass]"\\$target\root\default:stdRegProv"
$data = $wmi.GetBinaryValue($hklm,$regPath,$regValue1)
[string]$SQLver = $wmi.GetstringValue($hklm,$regPath,$regValue2).svalue
[string]$SQLedition = $wmi.GetstringValue($hklm,$regPath,$regValue3).svalue
$binArray = ($data.uValue)[52..66]
$charsArray = "B","C","D","F","G","H","J","K","M","P","Q","R","T","V","W","X","Y","2","3","4","6","7","8","9"
## decrypt base24 encoded binary data
For ($i = 24; $i -ge 0; $i--) {
$k = 0
For ($j = 14; $j -ge 0; $j--) {
$k = $k * 256 -bxor $binArray[$j]
$binArray[$j] = [math]::truncate($k / 24)
$k = $k % 24
}
$productKey = $charsArray[$k] + $productKey
If (($i % 5 -eq 0) -and ($i -ne 0)) {
$productKey = "-" + $productKey
}
}
$win32os = Get-WmiObject Win32_OperatingSystem -computer $target
$obj = New-Object Object
$obj | Add-Member Noteproperty Computer -value $target
$obj | Add-Member Noteproperty OSCaption -value $win32os.Caption
$obj | Add-Member Noteproperty OSArch -value $win32os.OSArchitecture
$obj | Add-Member Noteproperty SQLver -value $SQLver
$obj | Add-Member Noteproperty SQLedition -value $SQLedition
$obj | Add-Member Noteproperty ProductKey -value $productkey
$obj
}
}
Get-SQLserverKey
要注意的是,SERVERNAME,而不是SERVERNAME\INSTANCE.
分享到:
相关推荐
在PowerShell中是否有函数?...我们先来看一下简单的PowerShell函数: 代码如下: function Test-Function { Write-Host ‘Hello World!’ } 代码很简单,一共四行。第一行是由function关键词声明要定义一个
先来看看如下的一个函数定义: 代码如下: function prompt{ “PS zhanghong> “ } 这是一个非常普通的函数,没有什么实质性的不同。而且函数体里面的代码更是简单的不得了,直接是输出一个字符串。 把这个函数放...
主要介绍了PowerShell实现统计函数嵌套深度,本文分享一个函数,可以实现统计脚本执行的嵌套层次,需要的朋友可以参考下
PowerShell, 各种PowerShell函数和脚本 命令行命令各种PowerShell函数和脚本。 these在 PowerShell Gallery上发布为 WFTools ( 感谢) !为了简化和改进协作,已经将两个功能迁移到各自的知识库中。 副本保留在这里...
主要介绍了PowerShell中的函数重载示例,本文直接给出一个完整重载示例,需要的朋友可以参考下
下面这段代码,我们创建了一个test-function的函数。这个函数有一个参数p,它是必选参数。更进一步,我们为这个参数$p设置了一个helpMessage属性,这个属性的意思就是为这个必须参数提供帮助信息。因为是必选参数,...
定义PowerShell函数的返回值类型,要使用OutputType这个指令。将这个指令放到param指令之前即可实现对返回值类型的定义。 代码如下: function Test-IntelliSense { [OutputType(‘System.DateTime’)] param() ...
PowerShell自定义函数的参数没有具体的命名规则,那么怎么做才能让参数的命名更加科学可持续。 我们应该怎么来命名函数的参数名称呢?有没有一个可供参考的列表?当然微软没有给出来。但是我们可以来理一个列表出来...
Powershell支持“EXIT”...可是当你没有保存当前脚本或当你调用的是一个交互函数,你整个Powershell宿主将关闭。 “Exit”结束当前调用的脚本,不仅仅是函数。倘若你把它像下面那样保存到脚本,你也许会有意外的发
本文介绍在自定义PowerShell函数时,如何让函数返回值,如何接收返回值,如何让不相干的内容不放到返回值数组中。 PowerShell函数体中的任何输出,一般来说,都会以返回值的形式返回给函数调用者。多个输出的内容是...
数组传递参数时,参数个数本身无法限制,PowerShell函数提供了一个方法来限制数组中参数的个数。 PowerShell函数可以接受数组作为输入参数。而且不需要将数组定义好后再传给PowerShell函数,而可以直接将一个逗号...
PowerShell脚本 我创建的PowerShell脚本和函数的集合,使我的生活更轻松。
本文介绍PowerShell自定义函数中使用参数集时,可以将同一个参数既设置为可选,又设置为必选。 好吧,小编承认,这个话题有点无聊,但确实还是有点有趣,不妨看一看啦。 在PowerShell中,我们有可能有这样的需求,...
本文介绍在自定义PowerShell函数时,可以使用return语句来退出函数,同时return语句也可以返回值给函数的调用者。 使用return语句来直接退出函数。看一个退出函数的例子: 代码如下: function Get-NamedProcess { ...
通过替换函数名称,变量和参数来混淆powershell脚本
本文介绍在自定义PowerShell函数时,如何设置函数通过管道(Pipeline)接收输入参数。 先看一个例子,用管道作为输入参数的函数: 代码如下: function Test-Pipeline { param( [Parameter(ValueFromPipeline=$...
本文介绍在自定义PowerShell函数时,使用Hash表作为参数,它相当于将Hash表中的键当作参数名,而键的值当作参数值。 先直接看看这个以Hash表作为参数赋值给函数的示例: 代码如下: $hash = @{ Path = $env:windir...
本文介绍PowerShell自定义函数定义参数的两种方法,一种是将参数列表放到函数名之后,就跟其它语言定义函数参数一样;另一种则是PowerShell独有的方式,那就是使用param关键词。 先来看看第一种定义参数的方式——将...
播放笔记描述一个简单的PowerShell函数,使您可以使用Windows中的Beep()函数以乐谱形式编写/播放歌曲。自定义音乐符号对于每个音符,脚本会将您的输入分为3部分。 球场C,C#,D,Eb,E,F,F#,G,G#,A,Bb,B 八度音阶0,1,2...
这个PowerShell函数在设置参数集的时候,为参数集中的第一个参数设置了数据类型,这样在调用函数时,就可以自动判断一个参数值它应该赋给哪个参数了。 代码如下: function Test-Binding { [CmdletBinding...