2016/09/18

デモ用スクリプトダウンロード

8/27、コンピュータの舞台裏 (第7回) で行った、「PowerShellで始めるWindows 自動化入門」というセッションの資料を公開します。とても遅くなってすみません。

コンピュータの舞台裏は、コンピュータの仕組み、基礎の部分から扱う勉強会ですので、私の方からは、自動化ってそもそも何がうれしいの?というところから話をさせていただきました。

コンピュータの自動化手法として、プログラム言語やスクリプト言語を利用する方法がまず挙げられると思いますが、昨今は無料で使える言語がたくさんあります。その中でも、「システム管理用」を銘打つPowerShellは、システムの構成要素として重要な「ファイル」を扱うことにかけては、強力かつ簡単だと思います。というわけで、目の前のコンピュータの自動化の第一歩として、PowerShellを触ってみるのは悪くないんじゃないかと思っています。

2016/07/11

大変遅くなってすみません。7/2(土)、札幌で開催されたCLR/H #clrh101で行ったセッション、「PowerShell の概要と 5.x 新機能のご紹介」の資料を公開します。

札幌は涼しくて、何もかも美味しくて良かったです。夏の関西は人間の生存に適した気候とはとても言えないので、しばらく札幌に滞在していたかったですね。

さて、登録ページでのタイトルと若干違いますが、間もなく(8/2に)Windows 10 Anniversary Updateの登場とともにPowerShell 5.1の正式版が利用できるようになるということで、今回、5.0に加えて5.1の新機能もご紹介することにしたためです。(スライドは5.1の新機能の部分以外は、基本的にこれまでの内容と同様です。ご容赦ください。)

なお、PowerShell 5.1は現在のところ、Windows 10 Insider PreviewかWindows Server 2016 TP5で試すことができます。

PowerShell 5.0の登場からWindows Server 2016正式リリースまでの期間がけっこう空いたことと、ラピッドリリースの方針もあって、5.1が短期間で登場することとなりました。なのでどれが5.0でどれが5.1の機能かというのは割と曖昧ですけど、5.1で一番大きく変化するところは、PowerShellのエディションがDesktop EditionとCore Editionに分かれるところだと思います。

PowerShell Core Editionは従来のPowerShellのサブセット版となり、Windows Server 2016のインストールオプションの一つで、フットプリントを軽量化し、Windowsコンテナ技術に最適化された、Nano Serverで動作させることを目的として作られました。

Core Editionでは一部のコマンドレットのみのサポートとなりますが、基本的にNano Serverの管理はリモート経由でPowerShellを直接的あるいは間接的に用いて行うことになるため、当然ながら必須のコンポーネントとなります。

なお、PowerShell Core Editionは先日、1.0リリースを迎えたばかりの、.NET Core上で動作します。.NET Coreとは.NET Frameworkのサブセットで、マルチプラットフォームで動作し、OSSとして開発されています。

.NET Framework上で動作する、従来のフルセット版PowerShellも、Desktop Editionとしてこれまで通り利用可能です。

PowerShell 5.0、5.1の新機能はMSDNでまとめられているのでそちらもご参照ください。

Windows 管理フレームワーク (WMF) 5.0 RTM のリリース ノート概要 | MSDN
WMF 5.1 Release Notes (Preview)

追伸。Microsoft MVP for Cloud and Datacenter Managementを7月付で再受賞いたしました。おかげで今回のイベントで「関西MVP3人が集結」という触れ込みが嘘にならなくて良かったです。そして同じ分野でCLR/Hのスタッフでもある素敵なおひげさんも受賞されました。おめでとうございます。

2016/04/23

Japan PowerShell User Group (JPPOSH) 主催の第 6 回 PowerShell 勉強会(4/9)には多数の方にお越しいただき、ありがとうございました。

PowerShell勉強会は今後も年2回くらいのペースで続けて行きたいと思っていますので、どうぞよろしくお願い致します。

さて、私のセッション「PowerShell 5.0 新機能と関連OSSのご紹介」のスライドを公開します。前半は以前のものとだいたい同じですが、正式版対応版にアップデートしています。

今回は去年から今年にかけて、PowerShell関連ソフトウェアとしてOSS化したものを、まとめて紹介しました。以下は今回紹介したもののリストです。

またデモで用いたサンプルファイルも公開します。

このzipにも同梱してますが、PSScriptAnalyzerのカスタムルールはこんな感じで作ります。作り方は、ASTを受け取って、中身をチェックして、ルールに該当するならDiagnosticRecordを返すというのが基本になります。

using namespace Microsoft.Windows.PowerShell.ScriptAnalyzer.Generic
using namespace System.Management.Automation.Language

Import-Module PSScriptAnalyzer

function Test-UsingVarsWithNonAsciiCharacter
{
    # 変数に半角英数字以外の文字種が含まれていると警告するカスタムルール。
    [CmdletBinding()]
    [OutputType([DiagnosticRecord[]])]
    Param
    (
        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [ScriptBlockAst]
        $ScriptBlockAst
    )

    Process
    {
        [Ast[]]$variableAsts = $ScriptBlockAst.FindAll({
            param([Ast]$ast)
            $ast -is [VariableExpressionAst]
        }, $true)

        $variableAsts | 
        where {
            $_.VariablePath.UserPath -notmatch '^[a-zA-z0-9_]+$'
        }|
        foreach {
            $result = [DiagnosticRecord[]]@{
                "Message"  = "変数 `$$($_.VariablePath.UserPath) に半角英数字以外の文字種が使われています。"
                "Extent"   = $_.Extent
                "RuleName" = "AvoidUsingVarsWithNonAsciiCharacter"
                "Severity" = "Warning"
            }
            $result
        }
    }
}
Export-ModuleMember Test-UsingVarsWithNonAsciiCharacter

ついでにPesterのサンプルコードも。2つのパラメータを足し算する関数、Invoke-Additionに対するテストコードの例となります。

$here = Split-Path -Parent $MyInvocation.MyCommand.Path
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.Tests\.', '.'
. "$here\$sut"

Describe "Invoke-Addition" {   # テストの定義
    Context "足し算の実行" {   # テストのグループ化
        It "整数値を2個指定すると、足し算された結果が返る" {  # テストケース
            Invoke-Addition 3 5 | Should Be 8 # アサーション
        }

        It "小数値を2個指定すると、足し算された結果が返る" {
            Invoke-Addition 3.4 5.8 | Should Be 9.2
        }
    }

    Context "エラーの発生" {
        It "足し算できないものを指定するとエラー" {
            {Invoke-Addition 10 "x"} | Should Throw 
        }
    }
}

2016/03/13

昨日3/12(土)開催の、わんくま同盟大阪勉強会#66にお越しいただいた方、どうもありがとうございました。

私の行った「PowerShellコマンドとエラー処理」というセッションの資料を公開します。

あまりPowerShellのエラー体系についてまとまった資料がないように思いますので、参考にしていただければ幸いです。

2/20開催のOsaka ComCamp 2016 powered by MVPsで行った、「PowerShell DSCを用いたInfrastructure as Code の実践」というセッションの資料を公開します。

また、セッション中に行ったデモスクリプトはこちら。Pullサーバーを自動構築する例です。

2015/07/01

6/27、兵庫県芦屋市で開催されたAsiyan Automation Alliance 2015でのセッション資料を公開します。

Asiyan Automation Alliance 2015はその名の通り、自動化をテーマにした勉強会で、みうみう氏を中心とした運営メンバーにより開催されました。実は前年もAsian Automation Alliance 2014として兵庫県尼崎市で開催されており、今回はその続編であったようです。

実は私は芦屋市在住なんですが、地元で開催されるIT系勉強会に参加するのも、登壇するのも初めてで、中々貴重な経験でした。(単なるダジャレかと思いましたが、芦屋市民センターでのIT勉強会の開催実績は他にもあるそうです)

ちなみにAAAには前回も参加したのですが、前回はPowerShellのセッションがないからという理由で「PowerShell「再」入門2014〜short version〜」という突撃LTをしてきました(この時の資料は上げてませんが、http://winscript.jp/powershell/275と大体同じです。)。

今回は、1セッションの時間を頂けたので、改めてPowerShellを中心としたMicrosoftの提供する最新の自動化手法についてご紹介しました。割と総集編的な内容としましたが、いかがでしたでしょうか。

オンプレのWindows ServerやMicrosoft Azureはもちろん、最近はLinuxなど他プラットフォームへの浸食(?)も目立つようになってきました。この辺りの情報は非Microsoftクラスタの方にも積極的に情報提供したいと思っていますし、いろいろ情報交換させていただきたいですね。

2015/06/14

わんくま同盟大阪勉強会#63でのセッション資料を公開します。

デモで使用したサンプルスクリプトも併せてご利用ください。

わんくま同盟の勉強会は今回の大阪#63で10年目に入ったのですが、実は私も9年前の大阪#4で勉強会セッションデビューをしていたりします。

さて、今回はPowerShell DSCリソースを作成するというテーマで話しました。DSCでは管理対象ごとにロジック(リソース)と設定(Configuration)を分離でき、一貫性を持ったインフラ構成の自動化が可能になる素敵な機能です。が、いかんせん、ビルトインリソース(OS標準で含まれるリソース)の種類が少ないので、実際の業務で使うにはカスタムリソースを作成する必要が出てくると思います。

今回のデモでは、テキストファイルの中身を自動構成するという、ごく単純なサンプルを作成して実演してみましたが、考え方や実装方法の基本はこれでカバーできるのではないかと思います。

より詳しくは、ぎたぱそ氏の記事を読んでいただければ良いかと思います。本番で使えるPowerShell DSCリソース作成入門 - Build Insider

サンプルスクリプトの説明
  1. 事前準備

    今回のデモはWin10 Insider Preview(PowerShell 5.0)上で行いましたが、PowerShell 4.0環境でもおそらく動作すると思います。なお、今回のConfigurationはローカルコンピュータに対しPush適用(Start-DscConfigurationコマンドレットによる手動適用)することを想定しています。あらかじめ、DSCが実行可能な環境(スクリプト実行ポリシー、PSリモーティング、Local Configuration Managerの設定等)を整えておいてください。また、スクリプトはすべて管理者権限で実行してください。

  2. xDSCResourceDesignerのインストール

    DSCリソースのひな形を作成するためのxDSCResourceDesignerをインストールします。v5環境であればPowerShellGetを用い、Install-Module xDSCResourceDesigner で入ります。v4環境の場合はTechnetからDSC Resource KitをDLしてください。

  3. xDSCResourceDesignerの使用方法の確認

    xDSCResourceDesignerの使用方法を確認します。make_Foo_resource_template.ps1を実行すると、xDSCResourceDesignerを用いてDSCリソースFooのひな形が$env:ProgramFiles\WindowsPowerShell\Modules\TestResourceに作成されます。ひな形がどのように作成されるかを確認してください。また、Get-DscResource -Name Fooとして、DSCリソースがきちんと認識されているか、確認してください。

  4. TextFileLineリソースの作成

    今回のデモで作成したTextFileLineリソースは、make_TextFileLine_resource_template.ps1を実行してまずひな形を作成しました。作成されたひな形を用いて、TextFileLine.psm1に実際のロジックを記述し、DSCリソースを完成させました。zipに含まれるTestResourceフォルダの中身が、今回作成したDSCリソースモジュールになりますので、まずは内容を確認してみてください。特に、Set-TargetResource関数はどのように実装すると冪等性を保持して作成できるのかを念頭に置いてみてください。

  5. TextFileLineリソースの展開

    zipに含まれるTestResourceフォルダを$env:ProgramFiles\WindowsPowerShell\Modules\の下にコピーしてください。

    Get-DscResource -Name TextFileLineとしてDSCリソースが認識されていることを確認してください。

  6. TextFileLineリソースを用いたConfigurationの作成

    start_dsc_configuration.ps1に含まれる、TextFileLineTestが、今回適用してみるConfigurationになります。

    start_dsc_configuration.ps1を実行すると、ドキュメントフォルダにmofファイルを生成し、Start-DscConfigurationコマンドレットにより設定を反映させます。

    正しくConfigurationが適用されれば、ドキュメントフォルダにlist.txtというファイルが生成し、中にプログラム言語のリストが記入されているはずです。

  7. Configurationが反映されたことを確認

    Test-DscConfigurationコマンドレットを実行すると、現在の状態とConfigurationに書かれた状態が一致していればTrueと表示されます。今はConfigurationを適用した直後なのでTrueになるはずです。

    またGet-DscConfigurationコマンドレットを実行すると、現在の各プロパティの状態を表示してくれます。

    list.txtに含まれる行をテキストエディタで編集して上書きしたりすると、Test-DscConfigurationの結果はFalseになるはずです。

    list.txtを手動で変更した状態で、再度start_dsc_configuration.ps1を実行すると、再びConfiguration通りの状態に戻ると思います。その際、変更のなかったプロパティに関しては、処理がスキップされていることをログをみて確認してください。

  8. その他

    Configurationを色々書き換えて試してください。例えばEnsure="Absent"にすると対象項目が存在しない状態になります。

2015/05/10

第5回PowerShell勉強会でのセッション資料を公開します。

公開されたばかりのWindows Management Framework 5.0 Preview April 2015 、Windows 10 Insider Preview、Windows Server 2016 Technology Preview 2、そしてBuild 2015とMicrosoft Ignite期間中に発表になった情報をなるべく盛り込んでみました。

以下は今回資料を作るのに参考にしたサイト、記事群の一部です。

Windows Management Framework 5.0 Preview April 2015 何はなくともリリースノート。ただし全然まとまっていないので読みづらいです。

What's New in Windows PowerShell いわゆる更新履歴

Windows PowerShell Blog - Site Home - MSDN Blogs 特に直近の記事はすべて重要です

Windows Server Blog - Site Home - TechNet Blogs 上に同じく

Software Inventory Logging Cmdlets in Windows PowerShell SILコマンドレットのリファレンス

Jeffrey Snover | Speakers | Channel 9 PowerShell設計者であるJeffrey Snover氏のIgniteでの講演ビデオ、セッション資料

PowerShell v5 Undocumented Features List Altriveさんの作成されたundocumentedな新機能リスト

Windows Management Framework 5.0 Preview April 2015 がリリースされました - tech.guitarrapc.com ぎたぱそさんのまとめ記事

Windows Server 2016 Technical Preview 2 インストールと GUI の追加 村嶋さんの記事

Microsoft Ignite 2015 Keynote | ブチザッキ No.1によるIgniteキーノートまとめ

Nano Server関係は以下。ちなみにコンテナのPreviewは今夏だそうです。

Getting Started with Nano Server Technet公式記事だが、この手順通りでは動かないらしい

Create Nano Server VHDX file from WIM Altriveさん作成のNano Server構築スクリプト

Nano Server 取りあえずやってみた | ブチザッキ Nano Server構築

vNextに備えよ! 次期Windows Serverのココに注目(14):Windows Server 2016の新プレビュー版に「Nano Server」が搭載、その導入と管理方法 - @IT

山市良のえぬなんとかわーるど: 山市良版 Getting Started with Nano Server 山市良さんのNano Server記事

2015/04/14

JPPOSH(Japan PowerShell User Group)主催の、第5回PowerShell勉強会を5/9(土)に開催します。大阪での開催は3回目になります。会場はMicrosoft関西支店です。

セッションはお昼1時から4セッションあり、PowerShell大阪勉強会主催のwakaさんによる、「スクリプトの書き方」、私による「PowerShell 5.0 新機能」、ALM MVPのPosauneさんによる「C#er的Powershellの使い方」、岩城さんによる「PowerShellで行うOffice365の管理&メンテナンス」とのラインナップになっています。

今回は開発者視点の話が中心になりそうですが、基本的なスクリプトの書き方から実務への応用、そしてそろそろ全貌が見えてきた次バージョンの話まで、幅広く対応できる内容かと思います。ご興味のある方は、ぜひ、ご参加くださいませ。

今回の開催日は、アメリカで開催される大型カンファレンスである、Build 2015およびMicrosoft Igniteの直後ということもあって、私のセッションでは可能な限り両イベント開催中に新しく発表された情報を反映していこうと思っています。

先日発表になったばかりの、Windows Serverのコンテナ実行環境である、Nano Serverの詳細や、その上で動作するPowerShellの話なんかが出てくるんじゃないかなぁと思っていますが、どうでしょうね? お楽しみに。

2015/03/20

わんくま同盟大阪勉強会#62で行った、「PowerShell 5.0 新機能」セッションスライドを公開します。

WMF 5.0 Preview Feb. 2015時点でのPowerShell 5.0 / WMF 5.0の新機能は大体こんな感じにまとめられるかと思います。

  • Experimental design 
    • OneGet
    • PowerShellGet
    • クラス定義
    • DSC(Desired State Configuration)機能強化
    • デバッグ機能強化
    • スクリプトアナライザー
    • Auto-Generated Example-Driven Parsing
  • Stable design 
    • 監査機能の強化
    • CMS (CRYPTOGRAPHIC MESSAGE SYNTAX) コマンドレット
    • ODataエンドポイントのコマンドレット化
    • シンボリックリンク操作機能
    • zipファイル操作コマンドレット
    • Networkスイッチ管理用コマンドレット

新機能のうち、目玉となりそうなOneGet、クラス構文、DSC機能強化についてはいずれもまだ一部もしくは全部がExperimental designなので、今後もまだ仕様変更が入るものと思われます。(逆に仕様に物申すことができるチャンスは今だけ)

まだ正式版リリース(今年中?)までに新要素が入る可能性はありますが、全体像はそろそろ見えてきたと思います。現時点でも相当に新要素が追加されており、個人的にはv4→v5はv2→v3の時並のインパクトがあるアップグレードですので、今のうちに予習を始めておくのが良いかと思われます。

なお、近々、PowerShell勉強会@大阪(JPPOSH主催)でもPowerShell 5の話をする予定です。基本は同内容ですが、発表時点での最新情報を追加していこうと考えています。詳細が決まりましたらまた告知したいと思います。


古い記事のページへ |


Copyright © 2005-2018 Daisuke Mutaguchi All rights reserved
mailto: mutaguchi at roy.hi-ho.ne.jp
プライバシーポリシー

Twitter

Books