2012年12月27日木曜日

Powershell 3.0 リモート処理を行う方法

  • このエントリーをはてなブックマークに追加


Powershell 3.0ではリモートコンピューターを操作、管理剃る方法は主に3つあります。

方法1:コマンドの-ComputerNameパラメーターを使う
・リモートコンピューターに対して、「リモート」から操作を行う。
・複数のコンピューターを指定可能
※-ComputerNameを使用する場合、PSセッションは張られない。

リモートコンピューターWS201202に対して、Get-Processを実行する

PS C:\Users\Administrator> Get-Process -ComputerName ws201202

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    166      11     1664       4304    59             360 csrss
    169      12     2120      15580   195             412 csrss
    415      36    19900      25208   870            1628 dfsrs

複数のリモートコンピューターを指定

PS C:\Users\Administrator> Get-Process -ComputerName ws201201,ws201202

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    112      11     4756      12688    89     0.47   3872 conhost
    160      11     1664       4300    59             360 csrss
    147      11     1572       1608    62     1.61    360 csrss
    169      12     2120      15580   195             412 csrss

-ComputerNameパラメーターを持つコマンド一覧を表示
PS>Get-Command -ParameterName ComputerName

 

方法2:Invoke-Command -ComputerName <name> -ScriptBlock {コマンドブロック}を使う
・-ComputerNameパラメーターを持たないコマンドに対応
・リモートコンピューターの「中」で処理を行う
・複数のコンピューター指定可能
・PSセッションが張られる。コマンド終了時にセッションは消滅

リモートコンピューターWS201201、WS201202上のC:\tempの中身を表示

PS C:\Users\Administrator> Invoke-Command -ComputerName ws201201,ws201202 -ScriptBlock {Get-ChildItem C:\temp}

    ディレクトリ: C:\temp

Mode                LastWriteTime     Length Name                                  PSComputerName
----                -------------     ------ ----                                  --------------
-a---        2012/12/27     15:43          0 test.txt                              ws201202
d----        2012/12/21     11:04            Exchange2013                          ws201201

 

方法3:Enter-PSSession -ComputerName … を使う
・対話モードでPowershellを実行(SSHのように使う)
・Exitコマンドでセッションを切断する。

PS C:\Users\Administrator> Enter-PSSession -ComputerName ws201202
[ws201202]: PS C:\Users\Administrator.TEST\Documents> Get-Process

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    164      11     1668       4308    60     2.34    360 csrss

PowerShellによるWindowsサーバ管理術
永尾 幸夫 小鮒 通成 国井 傑 竹島 友理 牟田口 大介
ソフトバンククリエイティブ
売り上げランキング: 174,591

2012年12月26日水曜日

Exchange Server 2010 Service Pack 3 2013年前半にリリースされる

  • このエントリーをはてなブックマークに追加


Exchange Teamブログによると、Exchange Server 2010 SP3が2013年の前半にリリースされる予定です。

Exchange Server 2010 SP3では以下の新機能が含まれています。

・Exchange Server 2013との共存
既存のExchange 2010からExchange 2013にアップグレードしたい場合は、SP3に上げる必要があります。

・Windows Server 2012のサポート
Exchange 2010 SP3はWindows Server 2012にインストールできます。

・SP3以前にリリースされたすべてのFixesがSPに含まれている。

Exchange Team BlogAnnouncing Exchange 2010 Service Pack 3

Microsoft Exchange Server 2010 Best Practices (Best Practices (Microsoft)) Microsoft Exchange Server 2013: Design, Deploy and Deliver an Enterprise Messaging Solution

Windows Server 2012/Windows 8 言語パックのダウンロードおよびインストール

  • このエントリーをはてなブックマークに追加


Windows Server 2012/Windows 8 Language Packのダウンロード及びインストールをご紹介します。

Step 1:Powershell プロンプトを起動し、"control"を入力し、コントロールパネルを開きます。
image

Step 2:コントロールパネルの「時計、言語、および地域」で「言語の追加」をクリックします。
image

Step 3:「言語の追加」をクリックします。
image

Step 4:インストールする言語を選んで、「開く」をクリックします。「English(United States)」を選択して、「追加」をクリックします。
image
image

Step 5:追加したら、ダウンロード可能が表示され、ダブルクリックします。
image

Step 6:「入力方式の追加」で日本語タッチキーボードレイアウトを追加できます。「言語パックをダウンロードしてインストールします」をクリックして、インストールします。
image

Step 7:「更新プログラムのダウンロードとインストールを実行中です」画面が表示されます。
 image

Step 8:インストールが終わったら、ログオフし、再度ログオンします。

Step 9:インストールした言語を第一言語に設定します。再度ログオンしたら、英語になります。
 image

Windows Server 2012テクノロジ入門 (TechNet ITプロシリーズ)
山内 和朗
日経BP社
売り上げランキング: 18,536

2012年12月24日月曜日

VMware Player 5でWindows Server 2012をインストールする

  • このエントリーをはてなブックマークに追加


VMware Player 5で評価版のWindows Server 2012をインストールしてみました。

以下のリンクからダウンロードできます。

VMware Player 5.0.0

Windows Server 2012評価版

Step 1:VMware Playerを起動し、「新規仮想マシンの作成」をクリックします。
image 

Step 2:ウィザードで「後でOSをインストール」を選択します。
image 
    ※注意:「インストーラディスクイメージファイル(iso)」を選択し、仮想マシンを作成した場合は、OSインストール時にライセンス関連のエラーが出ます。エラーを回避するには、「仮想マシン設定の編集」の「CD/DVD(IDE)」で「ISOイメージファイルを使用する」のチェックを外して、インストール時にISOファイルを挿入します。

    マイクロソフト ソフトウェアライセンス条項が見つかりません。インストール元が有効であることを確認し、インストールを再実行してください。

    Windows cannot find the Microsoft Software License Terms.Make sure the installation sources are valid and restart the installation

Step 3:「ゲストOSの選択」で「Microsoft Windows」を選択し、バージョンを「Windows 8 x64」に設定します。
image

Step 4:「仮想マシンの名前」画面で仮想マシン名と保存場所を指定します。
image

Step 5:「ディスク容量の設定」画面でディスク最大サイズを設定し、「仮想ディスクを単一ファイルとして格納」をチェックします。
image

Step 6:準備が完了したら、「完了」をクリックします。ハードウェアをカスタマイズしたい場合は、「ハードウェアをカスタマイズ」をクリックし、設定します。
image     

ここからWindows Server 2012のインストールを行います。

Step 7:作成した仮想マシンを選択し、「仮想マシンの再生」をクリックします。
image

Step 8:「Player」→「取り外し可能デバイス」→「CD/DNV(IDE)」→「設定」をクリックします。
image

Step 9:CD/DVD(IDE)で「ISOイメージファイルを使用する」でWindows Server 2012のISOファイルを指定し、「OK」をクリックします。
image

Step 10:「<Ctrl>+<Alt>+<Delete>」をクリックし、OSインストールを再度開始します。
image

Step 11:既定の状態で「次へ」をクリックします。
image

Step 12:「今すぐインストール」をクリックします。
image

Step 13:Windows Server 2012のエディションを選択し、「次へ」をクリックします。
image

Step 14:ライセンス条項で「同意します」をチェックし、「次へ」をクリックします。
image

Step 15:インストールの種類を選択します。新規インストールの場合は、「カスタム:Windowsのみをインストールする(詳細設定)」をクリックします。
image

Step 16:Windowsのインストール先を選択し、「次へ」をクリックします。
image

Step 17:インストールします。
image

Step 18:Administratorのパスワードを設定し、インストールを完了します。
image

これで、Windows Server 2012にログオンできるようになります。

ひと目でわかるWindows Server 2012 (TechNet ITプロシリーズ)
天野 司
日経BP社
売り上げランキング: 11,277

2012年12月23日日曜日

Cent OS 6.0のインストールと基本設定

  • このエントリーをはてなブックマークに追加


 

こちらご参照ください。

http://www.kkaneko.com/rinkou/linux/centosinstall.html

はじめてのCentOS6 Linuxサーバ構築編 (TECHNICAL MASTER)

Exchange Server 2010 Powershellで DAGを構成する

  • このエントリーをはてなブックマークに追加


Step 1:DAGを作成する
New-DatabaseAvailabilityGroup -Name 'RadoreDAG' -WitnessServer 'EXGW01' -WitnessDirectory 'C:\RadoreDAG'

Step2:1台目のメールボックスサーバーをDAGに追加する
Add-DatabaseAvailabilityGroupServer -Identity 'RadoreDAG' -MailboxServer 'EXCAS01'

Step3:DAG用のネットワーク(パブリック、レプリケーション)を作成する
パブリックネットワーク
New-DatabaseAvailabilityGroupNetwork -DatabaseAvailabilityGroup RadoreDAG -Name 
Internet –Description "Internet Network" -Subnets 94.101.92.0/24 -ReplicationEnabled:$False
レプリケーションネットワーク
New-DatabaseAvailabilityGroupNetwork -DatabaseAvailabilityGroup RadoreDAG -Name 
Backup -Description "Backup Network" -Subnets 192.168.0.0/16 -ReplicationEnabled:$True

Step 4:DAGのIPアドレスを設定する
Set-DatabaseAvailabilityGroup -Identity RadoreDAG -DatabaseAvailabilityGroupIPAddresses 94.101.92.10

Step 5:二台目のメールボックスサーバーをDAGに追加する
Add-DatabaseAvailabilityGroupServer -Identity 'RadoreDAG' -MailboxServer 'EXCAS02'

Step 6:メールボックスデータベースを作成する
New-MailboxDatabase -Server 'EXCAS01' -Name 'Database01' -EdbFilePath 'C:\Program Files\Microsoft\Exchange Server\V14\Mailbox\Database01\Database01.edb' -LogFolderPath 'C:\Program Files\Microsoft\Exchange Server\V14\Mailbox\Database01'

Step 7:データベースの状態を確認して、マウントする
Get-MailboxDatabaseCopyStatus

Mount-Database -Identity 'Database01'

Step 8:他のメールボックスサーバーにデータベースを複製する
Add-MailboxDatabaseCopy -Identity 'Database01' -MailboxServer 'EXCAS02' -ActivationPreference '2'

Step 9:データベース複製状態を確認し、複製を開始する
Get-MailboxDatabaseCopyStatus -Identity 'Database01'

Update-MailboxDatabaseCopy -Identity 'Database01\EXCAS02'


参考

http://www.yusufozturk.info/exchange-server/hosted-exchange-2010-setup-guide-part-2.html


ひと目でわかるExchange Server 2010
ひと目でわかるExchange Server 2010
posted with amazlet at 12.12.23
エディフィストラーニング株式会社 竹島友理 飯室美紀 田島静
日経BP社
売り上げランキング: 170,625



Powershell 3.0でHyper-VのVHDファイルを最適化する

  • このエントリーをはてなブックマークに追加


Hyper-Vの仮想環境で多くの仮想マシンを動かしていたり、スナップショットをいっぱい取ったりしていませんか。そんなときによくネックになるのはハードディスクの容量ですね。仕方なく、スナップショットを削除したり、仮想ディスク(VHD)の最適化をしたりする必要があります。しかし、仮想ディスク(VHD)ファイルがいっぱいあって、1つずつ手で最適化するのが面倒です。Windows Server 2012になってPowershell 3.0で一括で簡単にVHDファイルを最適化することが可能です。

Powershell 3.0ではOptimize-VHDというコマンドがあります。以下の例では、C:\VMs下のすべての.vhd(.vhdx)ファイルを最適化することを実現します。

$vmsRoot = "C:\VMs"

Get-ChildItem –File –Path $vmsRoot –Filter *.vhd* –Recurse | Optimize-VHD  -Mode quick

ここで最適化モード(Mode)について、ちょっと説明します。

モード 詳細
Retrim ブロックの整理のみを行う。
0バイトブロックのスキャン、未使用のブロックの回収はしない。
ディスクが読み取り専用でマウントされている場合のみ。
Full 0バイトブロックのスキャン、未使用のブロックの回収を行う。
ディスクが読み取り専用でマウントされている場合のみ。
VHDファイルの既定モード
Quick 未使用のブロックの回収はするが、0バイトブロックのスキャンはしない。
ディスクが読み取り専用でマウントされている場合のみ。
VHDXファイルの既定モード
Pretrimmed Quickモードのように動作する。読み取り専用でマウントされる必要がない。
未使用のブロックの探索はQuickモードより遅い。
Windows 8または以降のOSに使われているVHDXファイル、あるいはVHDXがすでにコマンドのRetrimモードで最適化された場合に使う。
Prezeroed Quickモードのように動作する。読み取り専用でマウントされる必要がない。
未使用のブロックの探索はQuickモードより遅い。
特定のツールでディスク上のFree spaceを0にした場合に使う。

VMware Player 5.0.0に評価版のWindows Server 2012をインストールできない

  • このエントリーをはてなブックマークに追加


自宅でVMware Player 5.0.0に評価版Windows Server 2012をインストールしてみたのですが、ライセンス関連のエラーが出てしまって、インストールできませんでした。

マイクロソフト ソフトウェアライセンス条項が見つかりません。インストール元が有効であることを確認し、インストールを再実行してください。

Windows cannot find the Microsoft Software License Terms.Make sure the installation sources are valid and restart the installation

image

なぜエラーが出るかはわからないですが、これは、VMware Playerのバグでしょうか。

解決できました。

エラーを回避するには、「仮想マシン設定の編集」の「CD/DVD(IDE)」で「ISOイメージファイルを使用する」のチェックを外して、インストール時にISOファイルを挿入する必要があります。

詳細なインストール手順はこちらご参照ください。

VMware Player 5でWindows Server 2012をインストールする

 

 

ひと目でわかるWindows Server 2012 (TechNet ITプロシリーズ)

新品価格
¥2,730から
(2012/12/20 20:52時点)

Powershellでドメイン内のクライアントに対してグループポリシーを更新する

  • このエントリーをはてなブックマークに追加


グループポリシーを更新するには、gpupdateユティリティを使います。既定ではgpupdateはコンピューターの構成、ユーザーの構成両方を更新します。コンピューターの構成のみを更新する、またはユーザーの構成のみを更新する時に、/targetオプションをつけます。

コンピューターの構成の更新
PS C:\Users\Administrator> gpupdate /target:computer
Updating Policy...

Computer Policy update has completed successfully.


ユーザーの構成の更新
gpupdate /target:user

既定ではgpupdateは変更された設定しか更新しません。すべての設定を強制的に更新するには、/forceオプションを使用します。

PS C:\Users\Administrator> gpupdate /force
Updating Policy...

User Policy update has completed successfully.
Computer Policy update has completed successfully.

 

これからPowershell3.0でドメイン内のクライアントに対してグループポリシー更新をご紹介します。

Step 1:ドメイン内のクライアントオブジェクトを取得する。

ここでGet-ADComputerコマンドを使います。Get-ADcomputerコマンドはActive Directoryモジュールに含まれています。RSATツールからActive Directoryモジュールをインストールできます。

$clientPC = Get-ADComputer –Filter *

 

Step 2:クライアントごとに、Powershell リモートセッションを作成する。

New-PSSessionコマンドでセッションを作成します。

$credential = Get-Credential test\administrator

$session = New-PSSession –ComputerName $clientPC.name –Credential $credential

クライアントがオフラインになっている時に、以下のようなエラーメッセージが表示されます。

New-PSSession : <pc name> Connecting to remote server <pc name> failed with the following error message : The WinRM client cannot process the request because the server name cannot be resolved.

オンラインしているクライアントのセッションが成功しているので、エラーを無視していいです。

 

Step 3:リモートクライアントでgpupdateコマンドを実行する

Invoke-Commandを使います。確率されたセッションごとにScriptBlock内のコマンドを実行します。

Invoke-Command -Session $session -ScriptBlock {gpupdate /force}

 

Step 4:コマンドの実行結果を確認する。

グループポリシーが正しく更新された場合、システムイベントログにEvent 1502が出力されます。Get-EventLogコマンドで確認できます。

Invoke-Command -Session $session -ScriptBlock {Get-EventLog -LogName system -InstanceId 1502 -Newest 1

Windows PowerShell ポケットリファレンス (POCKET REFERENCE)
牟田口 大介
技術評論社
売り上げランキング: 241,533

2012年12月22日土曜日

Windows Server 2012 Powershell 3.0で仮想マシンのパフォーマンス情報を収集

  • このエントリーをはてなブックマークに追加


Windows Serve 2012ではPowershellコマンドで仮想マシンのパフォーマンス情報を取得することができます。

まず、仮想マシンへの監視機能(モニタリング)を有効にする

Enable-VMResourceMetering –VMName vm01

有効にしたら、仮想マシンの動作状況をモニタリングできます。Measure-VMコマンドを使ってパフォーマンス情報を収集します。

Measure-VM –VMName vm01

収集した情報をExport-CsvコマンドでCSVファイルにも出力できます。

Measure-VM -VMName vm01 | Export-Csv -Path c:\temp\vm01perf.csv -Append

Powershellで電子メールを送信する

  • このエントリーをはてなブックマークに追加


Powershell2.0ではSend-MailMessageという電子メール送信用のコマンドが導入されました。このコマンドを使ってPowershellで簡単に電子メールメッセージを送信できます。

構文は下記の通りです。

Send-MailMessage [-To] <string[]> [-Subject] <string> -From <string> [[-Body] <string>] [[-SmtpServer] <string>] [-Attachments <string[]>] [-Bcc <string[]>] [-BodyAsHtml] [-Cc <string[]>] [-Credential <PSCredential>] [-DeliveryNotificationOption {None | OnSuccess | OnFailure | Delay | Never}] [-Encoding <Encoding>] [-Priority {Normal | Low | High}] [-UseSsl] [<CommonParameters>]

メール送信時に必要な項目を指定します。

差出人: -From
宛先: -To
件名: -Subject
本文: -Body
SMTPサーバー: -SmtpServer
CC/BCC: -Cc/-Bcc
添付ファイル: -Attachments

例:User2からUser1にGet-Processの結果を送信する
Send-MailMessage –To "user1@contoso.com" –From  "user2@contoso.com" –Subject "Test mail sent by powershell" –body ((Get-process) | out-string) –SmtpServer ex1.contoso.com

PowerShellによるWindowsサー<br /><br />バ管理術
永尾 幸夫 小鮒 通成 国井 傑 竹島 友理 牟田口 大介
ソフトバンククリエイティブ
売り上げランキング: 174,591

2012年12月20日木曜日

Exchange Serve 2013 isoイメージをダウロード

  • このエントリーをはてなブックマークに追加


下記のtorrentファイルをダウロードして、BitCometなどのソフトでダウロードできるらしいです。

自分がまだダウロードしていないですが、なんかかなり時間がかかりそうです。

 

MICROSOFT.EXCHANGE.SERVER.2013.RTM.X64.MULTILANGUAGE.DVD-LULZISO.torrent

 

FILE: mu_exchange_server_2013_x64_dvd_1112105.iso
SIZE: 3,618,824,192 byte
NOTE: this original MSDN image.

STATIC ACTIVATION KEY'S:
Standard: CPJFG-C9D94-J7F4K-T9Q48-FWKP7
Enterprise: MV2FQ-2MVJD-WK2VK-CB8XP-3Q2D9

MULTILANGUAGE: English, Japanese, Korean, German, Spanish, French, Italian, Portuguese-Brazil, Russian, Chinese - Traditional, Chinese - Simplified

絶対わかる!Windowsサーバー&ネットワーク運用管理超入門 (日経BPムック―ネットワーク基礎シリーズ)

中古価格
¥440から
(2012/12/20 20:55時点)

Windows Serve 2012 PowershellでADドメインサービスの追加、構成、削除

  • このエントリーをはてなブックマークに追加


Windows Server 2012でPowershellコマンドを使ってActive Directoryドメインサービスのインストール、構成、DC降格などを試してみました。

・Active Directoryドメインサービスの役割の追加

Add-WindowsFeature -Name AD-Domain-Services

 

・Active Directoryドメインサービスの構成

$password = ConvertTo-SecureString -String "P@ssw0rd" -AsPlainText -Force

Import-Module ADDSDeployment
Install-ADDSForest `
-CreateDnsDelegation:$false `
-DatabasePath "C:\Windows\NTDS" `
-DomainMode "Win2012" `
-DomainName "test.local" `
-DomainNetbiosName "TEST" `
-ForestMode "Win2012" `
-InstallDns:$true `
-LogPath "C:\Windows\NTDS" `
-NoRebootOnCompletion:$false `
-SysvolPath "C:\Windows\SYSVOL" `
-Force:$true `
-SafeModeAdministratorPassword $password

 

・既存ドメインに新しいDC(ドメイン参加済みのサーバー)を追加し、構成する(リモートで実行する)

Install-WindowsFeature -Name AD-Domain-Services -ComputerName WS201202

$password = ConvertTo-SecureString -String "P@ssw0rd" -AsPlainText -Force
Invoke-Command -ComputerName WS201202 -ScriptBlock `
{Import-Module ADDSDeployment;Install-ADDSDomainController `
-DomainName "contoso.local" `
-NoGlobalCatalog:$False `
-CreateDNSDelegation:$False `
-Credential (Get-Credential) `
-CriticalReplicationOnly:$False `
-DatabasePath "C:\Windows\NTDS" `
-InstallDNS:$True `
-LogPath "C:\Windows\NTDS" `
-NoRebootOnCompletion:$False `
-SafeModeAdministratorPassword $password `
-SiteName "Default-First-Site-Name" `
-SysVolPath "C:\Windows\SysVol" }

 

・コマンドでインストールする際にAD管理ツール(Active Directory ユーザーとコンピューター、ADSIエディターなど)がインストールされていないため、別途インストールする必要がある

Add-WindowsFeature RSAT-ADDS

 

・DCを降格する

Import-Module ADDSDeployment
Uninstall-ADDSDomainController `
-DemoteOperationMasterRole:$true `
-IgnoreLastDnsServerForZone:$true `
-LastDomainControllerInDomain:$true `
-RemoveApplicationPartitions:$true `
-Force:$true

Import-Module ActiveDirectory
Uninstall-ADDSDomainController -IgnoreLastDCInDomainMismatch `
-RemoveApplicationPartitions

 

・DNS、Active Directoryドメインサービスの役割を削除する

Unintall-WindowsFeature DNS

Uninstall-WindowsFeature AD-Domain-services


Windows Server 2012テクノロジ入門 (TechNet ITプロシリーズ)

新品価格
¥4,935から
(2012/12/20 20:49時点)

2012年12月18日火曜日

Powershellで同じ構造のフォルダを比較

  • このエントリーをはてなブックマークに追加


同じ構造のフォルダを比較するPowershellスクリプトを書いてみました。

フォルダ内のサブフォルダ、ファイルのパス、更新日時、サイズを基準にして比較しています。

ソースコードは以下の通りです。

#==============================================
#処理:同じ構造のフォルダを比較する
#実行条件:2つのフォルダ名が同じであること
#==============================================
$dir1 = "u:\test"
$dir2 = "c:\temp\test"

if(!(Test-Path $dir1) -or !(Test-Path $dir2)){
    Write-Output "フォルダが存在しません。"
    Exit 1
}

$dir1name = (Get-Item $dir1).Name
$parent1 = (Get-Item $dir1).Parent.Name
$dir2name = (Get-Item $dir2).Name
$parent2 = (Get-Item $dir2).Parent.Name
if($dir1name -ne $dir2name){
    Write-Output "フォルダ名が異なるため、比較できません。"
    Exit 1
}

#連想配列
$content = @{}
$dir1only = @()
$dir2only = @()

$dir1con = Get-ChildItem $dir1 -Recurse | % {$nametime = $_.fullname + " " + $_.lastwritetime.ToString() + " " + $_.Length; Write-Output $nametime}
$dir2con = Get-ChildItem $dir2 -Recurse | % {$nametime = $_.fullname + " " + $_.lastwritetime.ToString() + " " + $_.Length; Write-Output $nametime}

foreach($con in $dir1con){
    $item = $con.Substring($parent1.Length)
    $content[$item] = -1
}

foreach($con in $dir2con){
    $item = $con.Substring($parent2.Length)
    if(++$content[$item] -eq 1){
        $dir2only += $con
    }
}

foreach($con in $dir1con){
    $item = $con.Substring($parent1.Length)
    if($content[$item] -eq -1){
        $dir1only += $con
    }
}

Write-Output "差分を出力します。"
Write-Output "-----------$dir1-----------"
Write-Output $dir1only
Write-Output "-----------$dir2-----------"
Write-Output $dir2only

 

ソースコードをコピーし、$dir1、$dir2に該当の値を変更して.ps1に保存して実行する。

機能が十分ではないため、複雑な比較はできません。

Windows Server 2012 Hyper-V Cookbook

新品価格
¥4,330から
(2012/12/20 20:55時点)

2012年12月17日月曜日

Windows Server 2012 Hyper-V管理用のPowershellコマンドがない

  • このエントリーをはてなブックマークに追加


Windows Server 2012では、Hyper-V管理用のPowershellモジュールが提供され、Powershellコマンドで仮想マシン作成、削除、エクスポートなどを管理できるようになりました。しかし、Windows Serve 2012 Coreで構成したHyper-V環境でPowershellコマンド(Export-VM)で仮想マシンをエクスポートしようと思いますが、PowershellコマンドプロンプトでExport-VMなどのコマンドが認識されません。
「Import-Module HyperV」でHyper-V管理用モジュールをインポートしても、「モジュールが見つかりません」のようなエラーが出ます。
Import-Module : モジュール ディレクトリに有効なモジュール ファイルが見つからなかったため、指定されたモジュール 'Hyper-V'
は読み込まれませんでした。
+ CategoryInfo : ResourceUnavailable: (Hyper-V:String) [Import-Module], FileNotFoundException
+ FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand

「Get-Module -ListAvailable」でインポート可能なモジュール一覧を出力してみたら、そもそもHyper-V管理モジュールがない事がわかりました。
Hyper-V管理モジュールがないということは、Hyper-Vモジュールがインストールされていないということです。モジュール自体はWindows Serve 2012のRemote Server Administration Tools (RSAT)に含まれています。下記のコマンドでインストールできます。
Add-WindowsFeature Hyper-V-PowerShell
インストール完了したら、Get-VM、Export-VMなどのコマンドが使えるようになります。


Windows Server 2012 Hyper-V Cookbook

新品価格
¥4,330から
(2012/12/20 20:55時点)

2012年12月14日金曜日

SCVMM 2012 仮想マシンをライブラリに保存、ライブラリから展開

  • このエントリーをはてなブックマークに追加


SCVMM 2012で仮想マシンの保存、ライブラリからの展開手順をご紹介します。

SCVMMが英語版なので、英語の表記となります。

 

・「VMs and Services」→「All Hosts」→「<ホスト名>」をクリックし、右ペインで仮想マシンを右クリックして、「Store in Library」を選択する

・「Select Library Server」画面でライブラリサーバーを選択する

・「Select Path」画面で事前に設定したVM保存先フォルダを選択する。

・「Next」→「Store]をクリックする

保存完了したら、SCVMMの「Library」→「Cloud Libraries」→「Stored Virtual Machines and Services」で保存されたVMが表示される。

※問題:

VMの持っているスナップショットがSCVMMのCheckPointsで正しく表示されていない(スナップショットの数が違ったりするなど)場合は、保存する時にジョブが以下のようなエラーとなり、失敗する。

Error (2903)
VMM could not locate the specified file/folder <xxxxx...avhdx> on the NO_PARAM server. This file/folder might be required as part of another object.

Recommended Action
Ensure that you have specified a valid path parameter, and that all necessary files/folders are present. Try the operation again.

スナップショットの差分ディスクの間の親子関係がSCVMMで保持されていない事が原因だと思われます。

 

保存したVMを再び展開できます。

・「Library」→「Cloud Libraries」→「Stored Virtual Machines and Services」で対象となるVMを右クリックし、「Deploy」を選択する

・「Host」、「Path」、「Networks」で設定して展開を実行する。

2012年12月13日木曜日

Windows Server 2012 Powershellで仮想化されたDCを複製して展開する

  • このエントリーをはてなブックマークに追加


Windows Server 2012では仮想化されたドメインコントローラー(DC)を複製して展開する事ができます。前提条件として、以下のとおりです。

・複製元となるDCはPDCエミュレータ(FSMO役割の一つ)役割を持ってはいけない

・複製元DCはClonable Domain Controllers グループのメンバーであること

・Hyper-VホストはWindows Server 2012であること

・DCはWindows Server 2012であること

複製、展開処理はPowershell 3.0で実現できます。

仮に、同一ホスト上で仮想DCがすでに2台(DC1、DC2)ある、DC1はPDCエミュレータの役割を持っている、DC2を複製してDC3を作成するとします

Powershellは下記のような感じです。

$srcDC = "dc2"
$distDC = "dc3"
$hypervHost = "hv01"

#複製元のDCを"Cloneable Domain Controllers"のメンバーに追加する
Get-ADComputer -Identity $srcDC | Foreach { Add-ADGroupMember -Identity "Cloneable Domain Controllers" -Members $_.samAccountName }

#c:\tempフォルダにCustomDCCloneAllowList.xmlが作成される。解説①
Invoke-Command -ComputerName $srcDC -ScriptBlock { Get-ADDCCloningExcludedApplicationList -GenerateXml -Path C:\temp -Force }

#新しいDCの構成ファイルを作成する
$dcConfig = "New-ADDCCloneConfigFile -Static -IPv4Address ""192.168.1.1"" '
                      -IPv4DNSResolver ""192.168.1.10"" -IPv4SubnetMask ""255.255.255.0"" '
                      -IPv4DefaultGateway ""192.168.1.253"" -ColneComputerName " + $distDC + '
                      " -SiteName ""Default-First-Site-Name"""
Invoke-Command -ComputerName $srcDC -ScriptBlock { $dcConfig }

#複製元のDCをシャットダウンする
Stop-VM -Name $srcDC

#複製元のDCをエクスポートする
Get-VM -Name $srcDC | Foreach { Export-VM $_ -Path C:\VirtualMachines }

#複製元のDCを起動する
Start-VM -Name $srcDC

#エクスポートした仮想マシンをインポートする
#構成ファイルをGetする
$config = (Get-Item "C:\VirtualMachines\$srcDC\Virtual Machines\*.xml").fullname
#C:\VirtualMachinesフォルダに複製先DCを保存するフォルダを作成
New-Item -Path "C:\VirtualMachines" -Name $distDC -ItemType directory
#インポートする
Import-VM -Path $config -ComputerName $hypervHost -GenerateNewId -Copy -VhdDestinationPath "C:\VirtualMachines\$distDC"

#仮想マシンの名前が複製元DCと同じなってしまうので、名前を変更する
Get-VM -Name $srcDC | Where-Object {$_.State -eq "Off"} | Rename-VM -NewName $distDC

#新しいDCを起動する
Start-VM -Name $distDC

解説①:#複製元のDCにインストールされたクローンできない可能性があるプログラムやサービスの一覧を取得します。クローンできるかどうか、ベンダーに確認する必要があります。できない場合は、事前にプログラムをアンインストールする必要があります。

Windows Server 2012 Hyper-V Cookbook

新品価格
¥4,330から
(2012/12/20 20:55時点)

Hyper-V マスタイメージ(親ディスク)を作成

  • このエントリーをはてなブックマークに追加


Hyper-Vで検証環境を作る時に、仮想マシン一台一台OSインストールして設定する事が大変ですね。こういう場合は、Hyper-Vの親ディスク(マスタイメージ)、差分ディスクを使うことをおすすめします。イメージとしては、一個の親ディスクがあって、複数の差分ディスクが親ディスクを共有しているような感じです。差分ディスクで仮想マシンを作成して、それぞれの仮想マシンに違うサービスパックやアプリケーションをインストールする事ができます。

 

親ディスクの作成は以下の手順となります。

1)親ディスクをホストするための仮想マシンAを作成する(手順は省略します)

2)仮想マシンAにOSをインストールする

3)仮想マシンAにログオンし、%Windir%\System32\sysprep\sysprep.exe を実行する(OSの固有情報を削除するため)

・設定画面で「システムの OOBE (Out-of-Box Experience) に入る」を選択し、「一般化する」にチェックをつけ、「終了」を選択し、「OK」をクリックする

・仮想マシンAをシャットダウンする

※Sysprep の実行時に「終了」ではなく「シャットダウン」を選択するのが一般的ですが、シャットダウンではなく再起動されることがあったため、Sysprep の「終了」を選択したうえでシャットダウンの操作を実施しています

4)仮想マシンAを削除する。(※仮想マシンAが削除されたが、親ディスクはちゃんと残っている)

・Hyper-V のディスクイメージが格納されているパス(既定では %SystemDrive%\Users\Public\Documents\Hyper-V\Virtual Hard Disks となっている)をエクスプローラで開き、VHDファイルに対して読み取り専用の属性を設定する

以上の操作により、親ディスクの作成が完了です。

 

Hypver-Vマネージャー→新規→ハードディスクをクリックし、差分ディスクを作成する。作成する際に親ディスクに上記の親ディスクを指定する。

差分ディスクを作成したら、差分ディスクを使って仮想マシンを作成する。

Windows Server 2012 Hyper-V Cookbook

新品価格
¥4,330から
(2012/12/20 20:55時点)

Windows Server 2012 NICチーミングを構成

  • このエントリーをはてなブックマークに追加


Windows Server 2012の新機能NICチーミングの構成方法をご紹介します。Powershell3.0がすごいPowerfullになっているので、Powershell3.0のコマンドで構成したいと思います。

まずは、Get-NetAdapterでネットアダプターの情報を確認します。こちらの環境ではNICが二枚があって、それぞれ"イーサネット"、"イーサネット2"という名前になっています。この名前を記録しておいて、後ほど使います。
次に、New-NetLbfoTeamコマンドでTeamを作成します。コマンドは下記です。
New-NetLbfoTeam -Name NetTeam1 -TeamMembers 'イーサネット 2', 'イーサネット' -TeamNicName TeamNic1
image
コマンドを実行したら、NetTeam1というネットワークチームが作成されます。既定ではチーミングモードが「スイッチに依存しない」で、負荷分散モードが「アドレスのハッシュ」となっています。「ネットワーク接続」で見たら、TeamNic1というチーム用のNICが作成されている事がわかります。
image
チームのプロパティを確認します。一番下に「一部の設定は、ゲスト仮想マシンで実行されているサーバーでは使用できません」というメッセージがあります。「チーミングモード」、「負荷分散モード」を変えられないようです。別のモードに変更したい場合は、おそらくチームを再作成する必要があります。
image

最後に、TeamNic1に対してIPアドレス、デフォルトゲートウェイ、DNSなどの設定を行います。もちろん、Powershellコマンドで設定できます。
Get-NetAdapter でInterfaceIndexを確認します。
Get-NetAdapter -Name TeamNic1
New-NetIPAddressでIPを設定
New-NetIPAddress -InterfaceIndex 22 -IPAddress 10.10.3.55 -PrefixLength 21 -DefaultGateway 10.10.0.1 -AddressFamily IPv4
Set-DnsClientServerAddressでDNSを指定
Set-DnsClientServerAddress -InterfaceIndex 22 -ServerAddresses 10.10.1.60
image
これで、TeamNic1でネットワークに接続できるようになります。

ひと目でわかるWindows Server 2012 (TechNet ITプロシリーズ)

新品価格
¥2,730から
(2012/12/20 20:52時点)