LoginSignup
11
11

More than 5 years have passed since last update.

SQLServerを完全にアンインストールする為のPowerShell

Last updated at Posted at 2017-06-21

SQLServerを完全にアンインストールするのはコントロールパネルの「プログラムと機能」からだけではできない。完全にアンインストールする方法、具体的にはここに書いてあるんだけど
https://blogs.msdn.microsoft.com/jpsql/2013/05/30/sql-server-4/
度重なるインストールアンインストールの繰り返しでうんざりしてきたのでレジストリを検索してUninstallStringを一発で表示させるようなPowerShellを書いてみた。一発できれいさっぱりアンインストールするPS1でなくてすいません。:sweat:


  • 最初に"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"の下のサブキーの一覧を取得してこのキーと連結したレジストリキーを作成する。
$keys = (Get-Item -Path "Registry::HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*") | Select-String "Uninstall"

  • $keysの中身はこんな感じになる。
PS C:\Users\Administrator> $keys
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{0C795124-D561-46FC-B4ED-B4F052A8D9E6}
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{0D3E9E15-DE7A-300B-96F1-B4AF12B96488}
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1D8E6291-B0D5-35EC-8441-6616F567A0F7}
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{2FFF0757-4360-42F5-8814-16BB5CF0145F}

  • このキー以下のValueの中身を検索し、DisplayNameに"SQL"が含まれるものについてのUninstallStringを抜き出せば良い
$keys|ForEach-Object{
    $dispname = (Get-Item -Path "Registry::$_").GetValue("DisplayName");
    if($dispname -ne $null -and $dispname.IndexOf("SQL") -gt -1){
        "[" + $dispname + "]`t" + (Get-Item -Path "Registry::$_").GetValue("UninstallString");
    }
}

  • 実行するとMsiExecの行が表示される。
[SQL Server 2016 Shared Management Objects]	MsiExec.exe /I{8AC195EB-E1EB-45D8-AEF2-6959C0212BB0}
[SQL Server 2016 XEvent]	MsiExec.exe /I{8CF2CA8E-3984-46B9-B493-F844F3774FA1}
[SQL Server 2016 Client Tools Extensions]	MsiExec.exe /I{AB765DC7-7642-4D1C-BEDC-035516CCD224}
[Microsoft SQL Server 2008 セットアップ サポート ファイル]	MsiExec.exe /X{B326848D-CBFA-4959-A9E6-68AABC11C8E2}
[SQL Server 2016 Shared Management Objects Extensions]	MsiExec.exe /I{B6E1A5EB-1C58-4A04-B76B-E5FE1BE22CA1}
  ・
  ・
  ・

あとはMsiExecのところを抜き出して、"/I"のところは"/X"に置き換えて実行します。GUID以外のMsiExecは実行しない様にしましょう。

11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11