布団が俺を呼んでいる

丘山大一のぶろぐ

IISのお勉強 WordPressのインストール その1

何故にこのようなことをしているのかと言えば、
「ただ単に私がIISを使ったことが無いから」
です、ハイ。
このブログではサーバー周りを取り上げることが多いですが、ワタクシ本職はWinForms畑ですので。

まずはIISのインストールから。
いきなり手を広げたりせず、まずは基本+管理ツールだけ入れてみることにします。
まあ無くても、WordPressインストール時にある程度入るんですけど。
Install-WindowsFeature Web-Server -IncludeManagementTools

実行結果は、おそらくGUIで「サーバーの役割」-「Webサーバー(IIS)」にチェックを入れ、後は既定でインストールした時の結果と同一であると思われます。(管理ツールインストール含めて、既定と書いています)

それが完了したら、続いてWordPressのインストール・・・・・・前に、ちゃんとWeb Serverが起動しているかどうかチェックしてみます。
ブラウザのアドレス欄に
http://XXX.XXX.XXX.XXX
と入力。ポチっとな、でデフォルトページが表示されます。
適当に作った検証用環境なのですが、これだけでもちょっと感動。

さて、なんとなく満足できたところで、続いてWordPressのインストール。
Web Platform Installer からインストールしてみます。
でもコレGUIからしか動かしたことねーぞ、どうやるんだろう・・・・・・と思ったら、やはり先達がいらっしゃいました。
記事ではv4ですが、折角なのでv5を・・・・・・と入れてみようと思ったら、x86用でした。
ので、素直にv4を入れてみたいと思います。
というわけで、上記で紹介されているコマンドをそのまま入力します。
$client = New-Object System.Net.WebClient
$client.DownloadFile("http://download.microsoft.com/download/C/F/F/CFF3A0B8-99D4-41A2-AE1A-496C08BEB904/WebPlatformInstaller_amd64_en-US.msi","E:WebPI.msi")
容量は2M位はより小さいので、ダウンロード自体はすぐに終わります。
※ダウンロードしたmsiの使い方は、-?でヘルプを呼び出せます。

インストールは下記コマンドで行いました。保存先は適当。
E:\WebPI.msi /passive /promptrestart
こちらもすぐに終わります。

インストール終了後、作業を楽にするために場所を移動しておきます。
Set-Location 'C:\Program Files\Microsoft\Web Platform Installer'

インストールできる製品は次のコマンドで確認可能。
.\WebpiCmd.exe /list /listoption:All

さて、ここからWordPressのインストールです。
インストールには次のコマンドを実行。
.\WebpiCmd.exe /install /Application:"WordPress"

ここからは対話式に進んでいきます。
・コマンドを実行すると、MySQLのパスワードを聞かれるので、任意のパスワードを入力します。
さらに、ライセンス条項に同意するかどうか聞かれるので、「Y」を入力。
しばらく、インストールが続きます。
それが終わると怒涛の設定ラッシュです。
インストールが終了すると、アプリケーションパス、データベースサーバーを入力するように促されます。
検証用なので、ひとまずデフォルトで突っ込みます。エンターキー2回で突破。
続いてデータベース名、データベースユーザー名を入力するように促されますが、ここもエンターキー(デフォルト:wordpress、wordpressuser)で突破。
次のデータベースパスワードはデフォルト値突破できないので、ここは適当に入力しておきます。
そしてデータベース管理者を要求されます。デフォルト値rootはエンターキーで突破。
データベース管理者パスワードは、データベースパスワードと同じくデフォルト値突破できないので、入力しておきます。
続いて4種類のユニークキーの入力を求められます。面倒なのでデフォルト突破。
・それが完了すると、上記で入力した4種類のユニークキーの再入力を求められます。間違えていないことを確認しながら入力。
これが完了すると、ようやく
「製品のインストール:成功」
となります。

動作確認するためには、ブラウザで
http://XXX.XXX.XXX.XXX/wordpress
にアクセスすればOK。

コマンドで確認する場合は下記。
Get-WebApplication

結果はこんな感じ。
Name             Application pool   Protocols    Physical Path
----             ----------------   ---------    -------------
wordpress        DefaultAppPool     http         %SystemDrive%\inetpub\wwwroot\wordpress

ちゃんとwordpressと出ています。

とりあえずここまでの感想。
シャルが可愛い。

Windows PowerShell 実践システム管理ガイド2版 (TechNet ITプロシリーズ)

新品価格
¥4,320から
(2015/10/21 00:21時点)

IS <インフィニット・ストラトス> 全6巻セット [マーケットプレイス Blu-rayセット]

新品価格
¥15,800から
(2015/10/21 00:23時点)

おしえて! ギャル子ちゃん  アニメ化

マジっすか。

気になるのは、ギャルンギャルンという擬音の演出。
どうやって表現するんだろう?


おしえて! ギャル子ちゃん 1 (MFコミックス)

新品価格
¥950から
(2015/11/9 20:41時点)

PowerShell ファイル数を数えての分岐

ファイル数を数えて、その数が一定数以下の場合、条件を満たしていないとして処理を中断させたかった。

if((Get-ChildItem $Path | Measure-Object | %{ $_.Count}) -le 2)
{
    Write-Warning "処理を中断します!"
    Exit-PSSession
}

なんかスマートさに欠けるような。もっと楽にとれないかな?
ちなみに、
Get-ChildItem $Path | Measure-Object | Select Count
でもファイル数自体はとれるんだけど、intで返らずオブジェクトで返ってくるので、単純な数比較がしづらい。

【改訂新版】 Windows PowerShell ポケットリファレンス

新品価格
¥3,002から
(2015/10/3 12:43時点)

PowerShell Invoke-Sqlcmdが動かない場合の一時対応

地味にはまった。
SQL Server2008R2 の入ったクライアントPCで、Invoke-Sqlcmdが通らず。
他人のPCなので、あまり設定をゴチャゴチャ弄りたくない。
そんな時は、下記コマンドを突っ込むと、そのセッション中はInvoke-Sqlcmdが使えるようです。

Add-PSSnapin SqlServerCmdletSnapin100 
Add-PSSnapin SqlServerProviderSnapin100 

SQL2012、2014といった場合は110,120になるのかな?
※管理ツールがインストールされていないとダメかも?
 未確認です。

動くサンプルで学べる Windows PowerShell コマンド&スクリプティングガイド PowerShell 4.0対応

新品価格
¥3,218から
(2015/10/31 18:28時点)

PowerShell Invoke-Sqlcmd で SQLServerの名前付インスタンスにアクセス

地味~に苦戦。
こことか見ながら。
上記サイト通りの「read-host 」を実行すると、パスワード入力が求められるようになります。
今回は入力を求められないようにしました。

$Sql = ("select name from sys.databases;")
$DBLst = Invoke-Sqlcmd -Query $Sql -ServerInstance "localhost\名前付インスタンス" –Username "sa" –Password "パスワード"

取得した結果は$DBLstに入っています。
アクセスする時はこんな感じで。
foreach($db in $DBLst){
    Write-Output $db['name']
}

初めのうちは、PowerShell がオブジェクトで値をとってくる、ということのメリットがよく分かりませんでしたが、段々と便利、と思えるようになってきました。


動くサンプルで学べる Windows PowerShell コマンド&スクリプティングガイド PowerShell 4.0対応

新品価格
¥3,218から
(2015/10/31 18:28時点)

PowerShell 64ビット判定

PowerShell バージョンによって違う? かもしれません。
動作を確認したのはWindows7からアップグレードした直後のWindows10。なのでバージョン5.0。
とりあえず64bitか否かで、ProgramFilesの場所を決めてみた。

$OS = Get-WmiObject -Class Win32_OperatingSystem
if ($OS.OSarchitecture -match "64")
{
    $Path = "Program Files (x86)"
} else
{
    $Path = "Program Files"
}


Windows PowerShell超入門 [4.0対応]

新品価格
¥2,160から
(2015/10/5 23:59時点)

Windows PowerShell超入門 [ 新丈径 ]

価格:2,160円
(2015/10/5 23:59時点)
感想(1件)

PowerShell 物理ドライブのドライブレター取得

やり方あるんですね。
取得自体は簡単でした。
Get-WmiObject Win32_LogicalDisk

使う時はこんな感じ?
foreach($Drive in Get-WmiObject Win32_LogicalDisk){
    if(Test-Path ($Drive.DeviceID + "\HogeHogeFolder")){        
        #処理
    }
}

Windows PowerShell超入門 [4.0対応]

新品価格
¥2,160から
(2015/10/5 23:59時点)

Windows PowerShell超入門 [ 新丈径 ]

価格:2,160円
(2015/10/5 23:59時点)
感想(1件)

PowerShell ローカルアカウント一覧の取得

どうやるのが正解なのか今一つ分からなかった。
Get-CimInstance -ClassName Win32_UserAccount -Filter "LocalAccount='true'"

下記でも取得できるが、フィルターのかかるタイミングの差か、AD環境下で沢山のユーザがひっかかってしまう場合だと遅いみたい。
あと汎用性に欠ける。
Get-CimInstance -ClassName Win32_UserAccount | Where-Object {$_.Domain -like "コンピューター名"}

GUIで 1:ユーザ追加 2:ユーザ名変更 とした場合、GUI上表示されるユーザ名とユーザプロファイル名がズレる(ユーザプロファイル名は変更前のまま)なのですが、上記のやり方だと変更後のユーザ名が取得できません。
どうやれば取得できるんだろう。

Windows PowerShell超入門 [4.0対応]

新品価格
¥2,160から
(2015/10/5 23:59時点)

Windows PowerShell超入門 [ 新丈径 ]

価格:2,160円
(2015/10/5 23:59時点)
感想(1件)

PowerShell Hostsファイルの更新 と 確認

ホストファイルの末尾に追記します。
Add-Content "C:\Windows\System32\drivers\etc\hosts"  "XXX.XXX.XXX.XXX`thogehoge.hoge"
IPの直後にある「`t」はタブ文字です。
入力する場合は「Shift+@」+「t」で。

追記後、確認したいなら次の一文。
start notepad "C:\Windows\System32\drivers\etc\hosts"

関係者に、「IP記述して~」という代わりに、このスクリプト実行して~の方が、楽・・・・・・
かと思ったけど、手間はあまり変わらないか。
Hostsファイルの開き方よりも、PSスクリプトの実行の仕方の方が知られてないもんなあ・・・・・・。


【改訂新版】 Windows PowerShell ポケットリファレンス

新品価格
¥3,002から
(2015/10/3 12:43時点)

Windows PowerShellポケットリファレンス改訂新版 [ 牟田口大介 ]

価格:3,002円
(2015/10/3 12:44時点)
感想(2件)

PowerShell Windows Server 終了時の理由入力を止める

正攻法は
「ローカルグループポリシーエディター」-「コンピューターの構成」-「管理用テンプレート」-「システム」-「シャットダウン イベントの追跡ツールを表示する」から。

でもあえてPowerShell によるレジストリ書き換えで。

ちなみに、このレジストリ、WIndows Server 2012 R2 で確認した限りでは、初期値ではキーが存在しません。
正確にいえば、初期値の「未構成」ではエントリが存在しないようです。
ですので、まずはエントリを作成。
New-Item "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Reliability"
それでから、キーを作成します。
New-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Reliability" ShutdownReasonOn  -Value "1"
これでOK。

【改訂新版】 Windows PowerShell ポケットリファレンス

新品価格
¥3,002から
(2015/10/3 12:43時点)

Windows PowerShellポケットリファレンス改訂新版 [ 牟田口大介 ]

価格:3,002円
(2015/10/3 12:44時点)
感想(2件)