我有一個 PowerShell 腳本,它結合了服務器和作業站上的大量不同資訊,以傳遞給高層管理人員。眾所周知,UM喜歡讓一切簡單明了。
我想要做的是......我正在使用我在另一個 SO 主題上找到的以下腳本,它完全符合我的需要。提取實體名稱和 SQL Server 版本/版本資訊。
$inst = (get-itemproperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances
foreach ($i in $inst)
{
$p = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL').$i
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$p\Setup").Version
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$p\Setup").Edition
$i
}
輸出顯示:
12.3.6024.0
Standard Edition
MSSQLSERVER
我似乎無法弄清楚,我整個上午都在這里查看腳本,是如何讓它顯示如下內容:
SQL Server 2014
Standard Edition
MSSQLSERVER
我希望它報告版本號是否為 12.x 它會導致 SQL Server 2014、13.x 會導致 SQL Server 2017 等。
在該死的世界里,我怎么能做到這一點?我正在學習 PowerShell,但在開關和所有這些方面,我仍然有點落后。
感謝您提前提供的幫助。
uj5u.com熱心網友回復:
您只需要添加一個開關(帶有正則運算式查找)來處理版本和“顯示”版本之間的“映射”(如您所愿):
$inst = (get-itemproperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances
foreach ($i in $inst)
{
$p = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL').$i
$v = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$p\Setup").Version
$e = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$p\Setup").Edition
$mv = switch -Regex ($v) {
'^8' { 'SQL Server 2000'; Break}
'^9' { 'SQL Server 2005'; Break }
'^10.0' { 'SQL Server 2008'; Break }
'^10.5' { 'SQL Server 2008 R2'; Break }
'^11' { 'SQL Server 2012'; Break }
'^12' { 'SQL Server 2014'; Break }
'^13' { 'SQL Server 2016'; Break }
'^14' { 'SQL Server 2017'; Break }
'^15' { 'SQL Server 2019'; Break }
default { "Unknown SQL Server Version" }
}
Write-Host $mv
write-Host $e
write-Host $p
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/416697.html
標籤:
上一篇:使用PowerShell從變數內容中獲取值進行代碼決議
下一篇:字串操作-Powershell
