labunix's blog

labunixのラボUnix

Windows2012Serverをサンドバッグにする為の下見

■Windows2012Serverをサンドバッグにする為の下見。
 ADにもなれず、仮想ホストにもなれない以上、
 大したことが出来ないことが分かって来たので。。。

■Windows2012サーバのPowerShell。
 ゲストOSにはHyper-Vは入らない。

> get-windowsfeature Hyper-V | format-list | findstr "Name Installed"
Name                      : Hyper-V
DisplayName               : Hyper-V
Installed                 : False
AdditionalInfo            : {MajorVersion, MinorVersion, NumericId, InstallName}

■以下に見るとおり、GMOのデスクトップクラウドのホストOSはHyper-Vである。
 MSによると「without Hyper-V」だけがサポートされている。

 仮想デスクトップをHyper-Vで商品化
 Windowsアプリケーションのクラウド型開発環境を提供
 http://special.nikkeibp.co.jp/ts/article/aba0/131610/

 仮想マシンとゲスト オペレーティング システムについて
 http://technet.microsoft.com/ja-jp/library/cc794868(v=ws.10).aspxPowerShellのデフォルトはShift-JISです。
 出力のデフォルトがUTF-8だったり、ASCIIだったりする統一性の無いコマンド群は
 MSの囲い込み手法のひとつで、わざとなんだと信じます。(天然だったらダサいw)

 「デフォルト」が何を指しているか分からない人には全く向いてませんのであしからず。

PS> $sysenc =  [System.Text.Encoding]::Default
PS> $sysenc.EncodingName
日本語 (シフト JIS)

■インストールされている役割の一覧の出力
 大きく分けて4つのステップがある。

 Step1 サーバマネージャをインポートして、
    CSVのデフォルトはASCIIなので、システムのデフォルトを指定、
    test.csvに出力。

 Step2 CSVの行検索、Installedを含む行のみ取り込んで変数strに格納。

 Step3 Splitは区切り文字をキーに列を行に変換、
    カンマ区切りで2行目がDisplayName、
    ダブルクォーテーション区切りで2行目が内容、変数str2に格納。

 Step4 Select-Stringの-notmatchオプションでDisplayNameという見出しを除外。
     ※Select-StringのデフォルトエンコーディングはUTF-8です。

PS> import-module ServerManager
PS> get-windowsfeature | export-csv -encoding default test.csv
PS> findstr "Installed" .\test.csv | tee -Variable str
PS> $str -replace '"','' | %{$_.split(",")[1]} | tee -Variable str2
PS> $str2 | select-string -pattern "DisplayName" -notmatch

ファイル サービスおよび記憶域サービス
記憶域サービス
.NET Framework 3.5 Features
.NET Framework 3.5 (.NET 2.0 および 3.0 を含む)
.NET Framework 4.5 Features
.NET Framework 4.5
ASP.NET 4.5
WCF サービス
TCP ポート共有
Media Foundation
Windows PowerShell
Windows PowerShell 3.0
Windows PowerShell 2.0 エンジン
Windows PowerShell ISE
WoW64 サポート
インクと手書きサービス
バックグラウンド インテリジェント転送サービス (BITS)
コンパクト サーバー
ユーザー インターフェイスとインフラストラクチャ
グラフィック管理ツールとインフラストラクチャ
サーバー グラフィック シェル
デスクトップ エクスペリエンス
高品質な Windows オーディオ ビデオ エクスペリエンス

■ちなみに配列の「0」番目だと以下。
 splitが区切り文字をキーに列から行に変換した後の
 剰余のn行から拾うのがちょっと面白い。

 面白いというのは、awkだと列のままや行のまま扱えるので額面どおりの褒め方では無いことは、
 行列の入れ替えを行いたい場合を考えれば分かると思う。

PS> $str -replace '"','' | %{$_.split(",")[0]} | tee -Variable str2
Name
FileAndStorage-Services
Storage-Services
NET-Framework-Features
NET-Framework-Core
NET-Framework-45-Features
NET-Framework-45-Core
NET-Framework-45-ASPNET
NET-WCF-Services45
NET-WCF-TCP-PortSharing45
Server-Media-Foundation
PowerShellRoot
PowerShell
PowerShell-V2
PowerShell-ISE
WoW64-Support
InkAndHandwritingServices
BITS
BITS-Compact-Server
User-Interfaces-Infra
Server-Gui-Mgmt-Infra
Server-Gui-Shell
Desktop-Experience
qWave

■インストールされていない役割、機能の一覧。
 PowerShellだとDepth=1を拾うのが面倒だったので、コマンドプロンプトで。
 うーん、要らないな~w。。。サーバとしては、Web、メール、DNSかな。。。
 どうでも良いけど、NTPは未だにVersion3なんだw。。。

> powershell get-windowsfeature > test.log
> findstr /V "[X]" test.log | find /V " [" | find "[" | find /N "["
[1][ ] Active Directory ライトウェイト ディレクトリ サ...  ADLDS                          Available
[2][ ] DHCP サーバー                                       DHCP                           Available
[3][ ] DNS サーバー                                        DNS                            Available
[4][ ] Hyper-V                                             Hyper-V                        Available
[5][ ] Web サーバー (IIS)                                  Web-Server                     Available
[6][ ] Windows Server Update Services                      UpdateServices                 Available
[7][ ] アプリケーション サーバー                           Application-Server             Available
[8][ ] BitLocker ドライブ暗号化                            BitLocker                      Available
[9][ ] BitLocker ネットワーク ロック解除                   BitLocker-NetworkUnlock        Available
[10][ ] BranchCache                                         BranchCache                    Available
[11][ ] HTTP プロキシを経由した RPC                         RPC-over-HTTP-Proxy            Available
[12][ ] LPR ポート モニター                                 LPR-Port-Monitor               Available
[13][ ] Management OData IIS 拡張機能                       ManagementOdata                Available
[14][ ] NFS クライアント                                    NFS-Client                     Available
[15][ ] RAS 接続マネージャー管理キット (CMAK)               CMAK                           Available
[16][ ] RDC (Remote Differential Compression)               RDC                            Available
[17][ ] Simple TCP/IP Services                              Simple-TCPIP                   Available
[18][ ] SMTP サーバー                                       SMTP-Server                    Available
[19][ ] Telnet クライアント                                 Telnet-Client                  Available
[20][ ] Telnet サーバー                                     Telnet-Server                  Available
[21][ ] TFTP クライアント                                   TFTP-Client                    Available
[22][ ] Windows Identity Foundation 3.5                     Windows-Identity-Fou...        Available
[23][ ] Windows Internal Database                           Windows-Internal-Dat...        Available
[24][ ] Windows Server バックアップ                         Windows-Server-Backup          Available
[25][ ] Windows Server 移行ツール                           Migration                      Available
[26][ ] Windows TIFF IFilter                                Windows-TIFF-IFilter           Available
[27][ ] Windows フィードバック転送                          WFF                            Available
[28][ ] Windows 生体認証フレームワーク                      Biometric-Framework            Available
[29][ ] WinRM IIS 拡張機能                                  WinRM-IIS-Ext                  Available
[30][ ] WINS サーバー                                       WINS                           Available
[31][ ] インターネット印刷クライアント                      Internet-Print-Client          Available
[32][ ] グループ ポリシーの管理                             GPMC                           Available
[33][ ] データ センター ブリッジング                        Data-Center-Bridging           Available
[34][ ] ネットワーク負荷分散                                NLB                            Available
[35][ ] ピア名解決プロトコル                                PNRP                           Available
[36][ ] メッセージ キュー                                   MSMQ                           Available
[37][ ] リモート サーバー管理ツール                         RSAT                           Available
[38][ ] 拡張記憶域                                          EnhancedStorage                Available


Windows2012サーバにPowerShellでIIS8.0をインストール

■Windows2012サーバにPowerShellでIIS8.0をインストール
 システムに変更を加えるには、「管理者としてWindowsPowerShellを開く」が必要になりました。
 面倒ではありますが、これは良い機能だと思います。
 ※管理者権限が無いと「Update-Help」も出来ません。
 
■タスクバーの通知領域にWindowsUpdateの項目はなくなったのですね。
 ログイン前に右下にメッセージは出る。
 WindowsUpdateを開いて、更新しないといけない。
 WSUSで管理している場合は、更新したら以下でレポートを投げましょう。

> wuauclt /detectnow
 
■以下のエラーメッセージの通り、「Administrators」グループに所属しているユーザで、
 「管理者としてWindowsPowerShellを実行」が必要です。

PS> add-windowsfeature $str
add-windowsfeature : 対象のコンピューターに変更を加えるのに適切なユーザー権利がありません。既に対象のコンピューターの A
dministrators グループのメンバーである場合は、ユーザー アカウント制御によって適用されるセキュリティ制限が原因で変更に失
敗した可能性があります。管理者特権 ([管理者として実行]) を使用して開いた Windows PowerShell セッションで Install-Window
sFeature を実行してください。
発生場所 行:1 文字:1
+ add-windowsfeature $str
+ ~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (@{Vhd=; Credent...Name=localhost}:PSObject) [Install-WindowsFeature],
    Exception
    + FullyQualifiedErrorId : Provider_UserIsNotAdmininistrator,Microsoft.Windows.ServerManager.Commands.AddWindowsFea
   tureCommand

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
False   No             Failed         {}

> net user labunix | findstr "*"
所属しているローカル グループ        *Administrators
                                     *Remote Desktop Users
                                     *Users
所属しているグローバル グループ      *なし

■「管理者としてWindowsPowerShellを開く」で開いて、
 「Get-Help」のヘルプファイルを更新します。

PS> Update-Help

■モジュールの確認。
 フォルダは「v.1.0」ですが、他のバージョンフォルダは無いので
 MSの仕様でしょう。。。

PS> import-module servermanager
PS> get-module servermanager | format-list

Name              : servermanager
Path              : C:\Windows\system32\WindowsPowerShell\v1.0\Modules\servermanager\ServerManager.psm1
Description       :
ModuleType        : Script
Version           : 2.0.0.0
NestedModules     : {Microsoft.Windows.ServerManager.PowerShell}
ExportedFunctions : {Disable-ServerManagerStandardUserRemoting, Enable-ServerManagerStandardUserRemoting}
ExportedCmdlets   : {Get-WindowsFeature, Install-WindowsFeature, Uninstall-WindowsFeature}
ExportedVariables :
ExportedAliases   : {Add-WindowsFeature, Remove-WindowsFeature}

■PowerShellでもコマンドプロンプトでも。。。
 最後のパイプはGowに含まれるtailでズルをします。
 組み込めるモジュールh32個あるということです。

PS> get-childitem c:\windows\system32\WindowsPowerShell\v1.0\Modules | %{$_.Name}

>dir /b C:\Windows\system32\WindowsPowerShell\v1.0\Modules\ | findstr /N "." | tail -1
32:WindowsErrorReporting

■Webサービス関連を見ると、54もの項目があります。

PS> get-windowsfeature Web* | %{$_.Name} | findstr /N "." | tail -1
54:Web-Mgmt-Service

■一般に必要なのは以下の3つでしょう。

PS> get-windowsfeature Web* | %{$_.Name} | findstr /N "Server"
1:Web-Server
2:Web-WebServer
42:Web-Ftp-Server

PS> get-windowsfeature Web* | %{$_.Name} | findstr "Server" | tee -Variable str
Web-Server
Web-WebServer
Web-Ftp-Server

■冒頭の「add-windowsfeature」時に出た
「Install-WindowsFeature」の警告はひとまず無視します。

PS> import-module servermanager
PS> get-windowsfeature Web* | %{$_.Name} | findstr "Server" | tee -Variable str
PS> add-windowsfeature $str

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
True    No             Success        {HTTP 共通機能, 既定のドキュメント, ディレ...

■インストールが完了して再起動は不要と出ましたが、
 フリーズしたのでコントロールパネルから再起動します。

■確認方法は以下と同様。

 Windows2012Serverをサンドバッグにする為の下見
 http://labunix.hateblo.jp/entries/2013/01/04

■インストールされたのは以下。管理コンソールがありません。

PS> import-module servermanager
PS> get-windowsfeature Web* |export-csv -encoding default after.csv
PS> findstr "Installed" .\after.csv |  %{$_.split(",")[1]} | tee -Variable str
PS> $str -replace '"','' |  select-string -pattern "DisplayName" -notmatch

Web サーバー (IIS)
Web サーバー
HTTP 共通機能
HTTP エラー
ディレクトリの参照
既定のドキュメント
静的なコンテンツ
セキュリティ
要求フィルター
パフォーマンス
静的なコンテンツの圧縮
状態と診断
HTTP ログ
FTP サーバー
FTP サービス

■インストールされていない一覧から管理コンソールをインストール。
 ※WindowsPowerShellを管理者として開くから行う。

PS> findstr /V "Installed" .\after.csv |  %{$_.split(",")[0,1]} | select-string -Encoding Default -pattern "mgmt" , "管理" | tee -Variable str

"Web-Mgmt-Tools"
"管理ツール"
"Web-Mgmt-Console"
"IIS 管理コンソール"
"Web-Mgmt-Compat"
"IIS 6 管理互換"
"Web-Lgcy-Mgmt-Console"
"IIS 6 管理コンソール"
"IIS 管理スクリプトおよびツール"
"Web-Mgmt-Service"
"管理サービス"

PS> install-windowsfeature Web-Mgmt-Console

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
True    No             Success        {IIS 管理コンソール, 管理ツール}

■認証とか動的圧縮とかはとりあえずスルーして、
 telnetクライアントをインストール。

PS> get-windowsfeature Telnet*

Display Name                                            Name                       Install State
------------                                            ----                       -------------
[ ] Telnet クライアント                                 Telnet-Client                  Available
[ ] Telnet サーバー                                     Telnet-Server                  Available

PS> install-windowsfeature Telnet-Client

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
True    No             Success        {Telnet クライアント}

■ついでにTelnetサーバもインストール。

PS> install-windowsfeature Telnet-Server

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
True    No             Success        {Telnet サーバー}

■TelnetでWebサーバの動作チェック。
 ※真っ暗な画面でノーミスで「GET / HTTP/1.0」とEnterキーを2回叩きましょう。
  画像のCSS指定「.hero」はHelloのことだと思いますが、スルーしましょう。。。

> telnet localhost 80
GET / HTTP/1.0


HTTP/1.1 200 OK
Content-Type: text/html
Last-Modified: Fri, 04 Jan 2013 10:00:41 GMT
Accept-Ranges: bytes
ETag: "d5fdd55a62eacd1:0"
Server: Microsoft-IIS/8.0
Date: Fri, 04 Jan 2013 11:34:49 GMT
Connection: close
Content-Length: 1398
...

■IIS8.0で検索
 IIS6.0の管理コンソールは削除予定なので、非推奨機能となっているとのこと。

 Web サーバー (IIS) の概要
 http://technet.microsoft.com/library/hh831725.aspx

■その他Windows2012の非推奨機能

 Windows Server 2012 で削除された機能または推奨されなくなった機能
 http://technet.microsoft.com/library/hh831568.aspx

■大抵の情報は以下のリンクから辿れる。

 Windows Server 2012
 http://technet.microsoft.com/ja-jp/windowsserver/hh534429

■少なくとも設定はGUIからやりましょう。
 WindowsPowerShellを使うメリットはインストールの証跡をテキストで簡単に残せる事です。
 操作はサーバマネージャからの方が楽でしょう。
 管理コンソールを起動すると、「新しいWeb Platformコンポーネントを取得」の
 メッセージが出ます。
 ※いいえを選択しても、後から操作から選択可能です。

■Web Platform Installer4.0
 追加するコンポーネントは「Node.js」等があり、追加/削除を選択、
 インストール/アンインストールを行えます。
 実際にインストールするにはSQL Serverが前提条件。
 ウィザードに沿って進めばSQL Server Express 2008R2が自動的にインストールされるはずだが、
 「SQL Server Express 2008R2」は互換性の問題があるとのこと。
 Megelia Web Store(for IIS)以外はインストール可能。