• Like
  • Save
Windows PowerShell 2.0 の基礎知識
Upcoming SlideShare
Loading in...5
×

Windows PowerShell 2.0 の基礎知識

  • 5,860 views
Uploaded on

2010/5/29 「技術ひろば.net」発表資料 …

2010/5/29 「技術ひろば.net」発表資料
収録ビデオはこちら http://technet.microsoft.com/ja-jp/edge/video/ff973102

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • ありがとうございます!
    Are you sure you want to
    Your message goes here
  • powershellの概要を知るために最初に読むと良い資料ですね。大変参考になりました。
    Are you sure you want to
    Your message goes here
  • セミナーを収録したビデオもあります→ http://technet.microsoft.com/ja-jp/edge/video/ff973102
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
5,860
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
3
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. マ゗クロソフト株式会社 デベロッパー&プラットフォーム統括本部 田辺 茂也 http://blogs.technet.com/stanabe
  • 2. Windows PowerShell の特徴 Windows PowerShell 詳細 対話的な使い方 より汎用的に作っていくには スクリプテゖング リモート管理 システム管理の新しいスタ゗ル コミュニテゖ、パートナー
  • 3. 新しく作り直した、管理のための強力なツール システム管理の自動化 初心者にもエキスパートにも使いやすい コマンドラ゗ンシェル + スクリプテゖング言語 + .NET Framework 3
  • 4. R2/Win7 搭載の PowerShell は 2.0 既定で有効、削除不可 Server Core では既定で無効 強化点 スクリプト言語としての機能強化 リモーテゖング グラフゖカル PowerShell ISE: Integrated Scripting Environment より高いセキュリテゖ R2 の役割管理モジュール 管理の標準ツールへ 4
  • 5. なぜ今さらコマンドラ゗ン? 1回きり、1回目の作業は GUI やウゖザードで 繰り返し作業、複数のサーバーに対しては PowerShell で 定期的なジョブは PowerShell で コマンドプロンプト:操作の統一性、 テキストベースの入出力、 ツール間の連携性、スクリプテゖングの容易さ 他の言語は汎用
  • 6. Windows XP や 2003, Vista, 2008 への対応は? ダウンロードセンターにて公開 http://support.microsoft.com/kb/968929/ja-jp XP SP3, Vistat SP1, WS03 SP2, WS08 SP2 今後 PowerShell のスキルは必須? 必須ではありませんが、かなりラクできます 今から始めるなら PowerShell がおすすめ VBScript、コマンドプロンプトはなくなるの? 引き続きサポートされます
  • 7. PowerShell 1.0 2006年11月公開 XP SP2, Windows Server 2003 SP1, Vista: ダウンロード Windows Server 2008: 機能の追加 PowerShell 2.0 Windows 7, Windows Server 2008 R2 標準装備 既定で有効。無効化、削除はできない Server Core では既定で無効 PowerShell 1.0 を置き換え (上位互換) その他の OS 向けにダウンロードセンターにて公開 Windows Server 2003 SP2, 2008 SP2 Windows XP SP3, Windows Vista SP1 http://support.microsoft.com/kb/968929/ja-jp Get-Host でバージョン取得
  • 8. 初回起動 Windows 7, Windows Server 2008 R2 ゕクセサリ – Windows PowerShell から起動 タスクバーにピン止めしておきましょう ヘルプ、ISE、管理者権限 Server Core では機能追加 Windows XP, Windows Server 2003, 2008 ダウンロードセンターからダウンロード ゗ンストール
  • 9. 試してみよう CUI, ISE を立ち上げてみる Get-help, Get-Command してみる Get-help about_* を見てみる 設定しよう Set-ExecutionPolicy # スクリプトの 実行ポリシー Notepad $profile # 自動設定プロフゔ゗ル Set-WSManQuickConfig # リモーテゖングの設定
  • 10. 気軽に始められる まずは、Get-Help, Get-Command, Get-Member Linux/Unix の経験があれば、より身近な操作性 一貫したコマンドレット体系 標準的な名前付けパターン [動詞]-[名詞] (例: get-help, get-command, get-member) パラメーターの指定方法 共通のパラメーター ノンプログラマにも優しいツール 10
  • 11. .NET Framework との強力な連携 CLR 上で動作 戻り値は常に「オブジェクト」 .NET Framework のクラスを呼び出せる 使えば使うほどに効いてくる特長 データへのゕクセスを共通化 ドラ゗ブに割り当て ドラ゗ブレターだけでなく、文字列を使用可 サードパーテゖ、コミュニテゖによるサポート スクリプトやツールが充実 高度なニーズにも応えるパワー 11
  • 12. 文字に見えて、単なる文字ではありません。 整数、浮動小数点 日付、時間 フゔ゗ル情報、プロセス情報… 文字ではないので、文字列操作が不要です。 オブジェクトのプロパテゖとメソッド パ゗プにはオブジェクトが流れています パ゗プ、プロセス、変数が簡単に扱えます。 例:テキストフゔ゗ルを読み込んで、変数にセット 変数の内容をフゔ゗ルに保存 オブジェクトの使いこなしが鍵 12
  • 13. すでに利用しているツールも続けて使いたい PowerShell 内で利用可能 コマンド (com, exe) COM オブジェクト ツールが出力するデータを活用 PowerShell でデータを再利用できるように加工 PowerShell で安全なテキスト解析 PowerShell でラップすることで拡張可能 .NET Framework のクラスを直接呼び出せる プログラミングの経験を活用 段階的な移行が可能 13
  • 14. セキュリテゖのレベルに応じて、 スクリプトの実行ポリシーを設定 Set-ExecutionPolicy, Get-ExecutionPolicy 設定の変更には管理者権限が必要 グループポリシーで設定可能 スコープ MachinePolicy, UserPolicy, Process, CurrentUser, LocalMachine, Visibility 特定のコマンドだけ使用できるように設定 ゕプリケーションへの埋め込み時に有用 データセンターでも安全 14
  • 15. 5段階の実行ポリシー • 制限つき (オペレーターモード) Restricted • ゗ンストール時の既定。対話形式のみ、スクリプトは実行できない • デジタル署名が必要 AllSigned • スクリプトは、信頼された発行元による署名が必要 Remote • リモートの署名 Signed • "゗ンターネットゾーン" のスクリプトは信頼された発行元による署名が必要 • 無制限 Unrestricted • すべてのスクリプトを実行可能、リモートのスクリプトについては常に警告 • バ゗パス Bypass • すべてのスクリプトを実行可能、警告なし • 設定したポリシーのクリゕ Undefined データセンターでも安全 15
  • 16. まずシェルで対話的に実験 ユーティリティで結果を結合 • パ゗プ、Format-* コマンドレット、ワンラ゗ナー 動作確認した一連のコマンドレットを スクリプトに • Start-Transcript による記録も便利 変数、パラメータなどを導入して汎用化 • 関数に書き換え・$args, param() • オブジェクトを出力とする、小さなスクリプト 実運用レベルのスクリプトに改良 • エラー処理・ログの作成・コード署名 • 社内やコミュニテゖで共有
  • 17. function myfunc { param( [DateTime]$dt = Get-Date [Int]$n = Read-Host ) # 既定値、型、名前指定パラメータ begin { } process { } end { } }
  • 18. PS> $n = 9223372036854775807 # 最大値 PS> $m = $n + 1 PS> $m 9.22337203685478E+18 PS> $m -1 9.22337203685478E+18 PS> $m -eq ($m-1) True PS> [decimal]$n + 1 9223372036854775808
  • 19. [Reflection.Assembly]::LoadWithPartialName("System.ServiceModel.Web") | Out-Null $sss = "System.ServiceModel.Syndication." $feed = new-object ($sss + "SyndicationFeed") $feed.Title = "Event Logs" $feed.LastUpdatedTime = [DateTimeOffset]::Now Get-EventLog System -Newest 100 | ` foreach { $item = new-object ($sss + "SyndicationItem") $item.Title = "[{0}] {1}: {2}" -f $_.Index, $_.EntryType, $_.Source $item.Authors.Add((new-object ($sss + "SyndicationPerson") ($_.Source + "@" + $_.MachineName), $null, $null)) $item.Categories.Add((new-object ($sss + "SyndicationCategory") $_.EntryType)) $item.Categories.Add((new-object ($sss + "SyndicationCategory") $_.EventID)) $item.Categories.Add((new-object ($sss + "SyndicationCategory") $_.Source)) $item.PublishDate = $_.TimeGenerated $item.Content = new-object ($sss + "TextSyndicationContent") $_.Message $feed.items.add($item) } $rssFormatter = new-object ($sss + "Rss20FeedFormatter") $feed $rssFile = "c:¥inetpub¥wwwroot¥logrss¥rsstest.xml" $rssWriter = [System.Xml.XmlWriter]::Create($rssFile) $rssFormatter.WriteTo($rssWriter); $rssWriter.close() http://blogs.technet.com/b/stanabe/archive/2008/01/23/generating-rss-with-powershell.aspx
  • 20. $w = new-object system.net.webclient $enc = [Text.Encoding]::GetEncoding("utf-8") $appid = "myappid" $from = "en" $to = "ja" $api = "http://api.microsofttranslator.com /V2/Http.svc/Translate" $url = "{0}?appid={1}&from={2}&to={3}&text={4}" -f $api, $appid, $from, $to, $text $h = $enc.GetString($w.DownloadData($url)) ([xml]$h).string.get_Innertext() http://blogs.technet.com/b/stanabe/archive/2010/04/23/ powershell-how-to-use-microsoft-translator-via-api.aspx
  • 21. スクリプテゖング環境 (IDE) の提供 PowerShell ISE (Interated Scripting Environment) より直感的なスクリプテゖング・実行 26
  • 22. Windows PowerShell の広がり サーバー製品に PowerShell のスナップ゗ン Exchange Server 2007, 2010, Live@Edu System Center Operations Manager 2007 Virtual Machine Manager 2007 Data Protection Manager 2007 Windows Server 2008 R2 Windows 7 Windows Azure 複数のスナップ゗ンを読み込んでシームレスな管理 GUI と CUI の連続性 1度きりの作業、1回目の作業は GUI (ウゖザード) 繰り返し作業、自動化は CUI (スクリプト)
  • 23. 管理ツール UI (例: Active Directory 管理センター) 自動化 プラットフォーム (例: AD コマンドレット) オブジェクトモデル (Active Directory) GUI と CUI で同様の作業が可能に 30
  • 24. Windows Server 2008 R2 サーバーの運用管理に本格的に活用 Active Directory グループポリシー Server Manager IIS リモートデスクトップサービス フェールオーバークラスタリング Best Practices その他… 共通管理基盤としての PowerShell 31
  • 25. 既定で有効、Server と全く同じ環境 Windows トラブルシューテゖング プラットフォーム トラブルシュートのための共通基盤 c:¥windows¥diagnostics クラ゗ゕントにも標準搭載 34
  • 26. CodePlex で Windows PowerShell 関連の 開発プロジェクトが進行中 CodePlex: http://www.codeplex.com タグ名 “PowerShell” で検索 PowerShell Community Extensions http://www.codeplex.com/PowerShellCX フゔ゗ルの圧縮、クリップボードへのゕクセス、ゕセンブリの取扱いなどの コマンドレット ゕセンブリキャッシュ、LDAP、IE7のRSSフゖードにゕクセスするプロバ゗ダ その他ユーテゖリテゖ関数、フゖルター PowerShell Remoting http://www.codeplex.com/powershellremoting クラ゗ゕント・サーバー型のリモートシェル Windows Installer PowerShell Extensions http://www.codeplex.com/psmsi MSI フゔ゗ルを取り扱う
  • 27. Windows 7 Resource Kit PowerShell Pack http://code.msdn.microsoft.com/PowerShellPack Module Description Create rich user interfaces quick and easily from Windows PowerShell. Think WPK HTA, but easy. Over 600 scripts to help you build quick user interfaces TaskScheduler List scheduled tasks, create or delete tasks FileSystem Monitor files and folders, check for duplicate files, and check disk space Supercharge your scripting in the Integrated Scripting Environment with over IsePack 35 shortcuts Explore loaded types, find commands that can work with a type, and explore DotNet how you can use PowerShell, DotNet and COM together PSImageTools Convert, rotate, scale, and crop images and get image metadata PSRSS Harness the FeedStore from PowerShell PSSystemTools Get Operating System or Hardware Information Get the users on a system, check for elevation, and start- PSUserTools processaadministrator PSCodeGen Generates PowerShell scripts, C# code, and P/Invoke
  • 28. PowerShell PowerBoots http://powerboots.codeplex.com/ PS> Boots { "ハロー、ワールド。" | TextBlock -Margin 5 -FontSize 24 –FontWeight Bold -Foreground "Red" | StackPanel -Margin 10 -BackGround "Pink"}
  • 29. PowerGadgets http://www.softwarefx.com /SfxSQLProducts/PowerGadgets/ チャート、ゲージ、地図 サ゗ドバー ガジェット /n software inc http://www.nsoftware.com/powershell/ NetCmdlets ネットワーク関連のコマンドレット SNMP, SSH, LDAP, FTP, Syslog, Jabber, DNS, MIME, UUEncode, Zip … PowerShell Server (PowerShell Inside) Quest Software, FullArmor …
  • 30. 日本語の参考書が 数多く出版されて います。
  • 31. Windows PowerShell でのスクリプテゖング http://technet.microsoft.com/ja-jp/scriptcenter/powershell.aspx TechNet フォーラム http://social.technet.microsoft.com/Forums/ja- JP/powershellja/threads
  • 32. Windows PowerShell は ついに運用管理のメ゗ンストリームへ 開発者、スクリプト開発者にも 応える豊富な機能 Windows PowerShell を日常管理作業に ぜひ取り入れてみてください!