amatarasu48 の紹介

シアトル在住の日本人ソフトウェアエンジニアです。心は常に日本にあります。よろしくお願いします。

IISのアプリケーションをすべて消す方法

IISに何十個ものウェブアプリケーションがあり、それがらもうすでに使われていない場合、IISマネージャーからだととてもじゃないけどすべてを消すには厳しいものがある。やっぱりそこでPowerShellの登場だ。プロダクション環境では気をつけて…

Import-Module WebAdministration
pushd
cd IIS:
cd 'Sites\Default Web Site'
dir | where {$_.NodeType –eq “application”} | foreach {Remove-WebApplication $_.Name}
popd

元記事

PowerShellでリモートマシンのサービスをリストする

多くのコンピューターを管理をすることはIT関係の仕事をしているとよくあることです。特に最近は仮想マシンの技術が発達して、より多くのコンピューターを管理する機会が多くなりました。それぞれのコンピューターにリモートログインをしてあるWindowsサービスがインストールされているかどうかをチェックするのは、数台のコンピューターだったら大したことはないのですが、10台、20台になるとそれだけで結構時間のかかるものです。

そこで、PowerShellのスクリプトでリモートマシンのWindowsサービスをリストすることができます。以下の例ではすべてのリモートマシンが同じ資格情報(Administrator)を使用できるものとします。

$credential = Get-Credential -Credential Administrator

$computers = “server1″,”server2″,”server3″,”server4″,”server5″,”server6″

foreach($computer in $computers)
{
    ” $computer ================”
    $allServices = Get-WMIObject Win32_Service -computer $computer -credential $credential
    $allServices | where{$_.DisplayName -match “integration”} | Format-List -Property DisplayName
}

※この記事は「徒然雑記」に掲載したものです。

IISのウェブアプリケーションをPowerShellで削除

めっちゃ久々に投稿します。よ、4年ぶり???www

開発の仕事をしていると、開発マシンのIIS内にウェブアプリケーションがたくさん作成されます。数十個または百個余りのウェブアプリケーションをIISマネージャーから右クリックして削除となると大変時間がかかりますね。Shift+クリックができないのがその大きな理由です。そこでPowerShellを使用して一気に削除する方法を紹介します。

PowerShellではIIS自体をファイルシステムのように扱うことができます。それができるようにするには、PowerShellのアイコンを右クリックして「システムモジュールをインポートする」をクリックします。

image

次にIIS:と入力してEnterキーを押すと、IISドライブが登場して、dirコマンドを入力すると以下の画像のように表示されます。

SNAGHTMLc1592

今度はSites\Defailt Web Siteに入ってdirコマンドを入力すると、以下のようにDefault Web Site内に存在するファイルやディレクトリや仮想ディレクトリがリストされます。

image 

ここで次のコマンドを入力します。以下のコマンドは本当にすべてのウェブアプリケーション、そしてそれに対応するディレクトリを削除しますので、気をつけて自己責任で実行してください。

dir | where {$_.NodeType –eq “application”} | foreach {del $_.PhysicalPath; Remove-Item $_.Name –recurse}

再びdirを入力すると、以下のようにtest1とtest2のウェブアプリケーションが削除されました。これはIISマネージャーで確認しても同じです。

image

PowerShellからWatiNを使う(V2編)

この間PowerShellからWatiNを使おうとして一番問題になったのがWatiNをPowerShell上でSTAモードで実行しなければならなかったことだ。前回の記事でも紹介したようにV1のPowerShellではSTAにするにはC#のカスタムコマンドレットをコンパイルしてそれの助けを得て初めてWatiNをSTA(シングルスレッドアパートメント)モードで実行できたのだが、なんとV2を使うとPowerShellを簡単にSTAモードでスタート出来てしまうことを発見。これがあればこの間苦労したことなんて一気に解決だ。

コンソール上でpowershell /?と打ってやるとpowershell.exeの起動時のオプションが表示される。その中に・・・

-Sta
    Start the shell using a single-threaded apartment.

PowerShellを起動するショートカットのプロパティのターゲットに-Staを追加して更新し、ショートカットをダブルクリックするとPowerShellがSTAモードで起動してくれるのだ。あとはWatiNスクリプトが入ったファイルを普通に実行すると見事に成功。今までの苦労はなんだったんだろう・・・

というわけでWatiN+PowerShellがかなり現実味を帯びてきた。これからもっとWatiN用のPowerShellスクリプトを書いていきたいと思っている。