PowerShellハンズオン 2012/03/24 第27回 .NET 勉強会 / ヒーロー島 牟田口大介 POWERSHELLハンズオ ンの準備、諸注意 講師自己紹介 牟田口大介 ライターやってます ◦ 2008 Windows PowerShell ポケットリファレンス(技 術評論社) ◦ 2009 PowerShellによるWindowsサーバ管理術(ソフト バンククリエイティブ、共著) ◦ 2010~ PowerShell的システム管理入門(@IT) http://www.atmarkit.co.jp/fwin2k/operation/pshsys01/pshsy s01_01.html Microsoft MVP for PowerShell ◦ 昨年7回目の受賞をさせていただきました http://winscript.jp/ http://twitter.com/mutaguchi http://www.facebook.com/daisuke.mutaguchi アジェンダ PowerShellハンズオンの準備、諸注意 第一部:コンソールを使ってみよう 休憩 第二部:スクリプトを書いてみよう 第三部:PowerShellリモート体験 ◦ ↑時間があれば… 本日のまとめと後処理 本日の目標 PowerShellコンソールの使い方を理解 する 簡単なPowerShellスクリプトを作成し て実行する方法を理解する PowerShellリモートの概念を理解し、 バックグラウンド処理とリモート処理 の仕方を理解する(時間があれば) ハンズオンの諸注意 PowerShellはシステム管理シェルで、その名 の通り強力です。よって、オペレーションミ スでファイルや設定などを壊してしまう可能 性があります。 PowerShellはUACをオンにした上で昇格せず に起動してください。(指示があるときを除 く) Get-*以外のコマンドレットを実行する際は 以下の共通パラメータを使い確認を ◦ -whatIf (実行した場合何が起こるか表示) ◦ -confirm (実行する前に実行確認表示) 分からないことがあればいつでも聞いてくだ さい!! 準備 PowerShellのインストールは済んでい ますか?(XP,Vistaの方!) ◦ 「スタート」-「すべてのプログラム」「アクセサリ」-「Windows PowerShell」 ◦ まだの方はインストールをお願いします。 検索:「 Windows PowerShell 2.0」 ◦ PowerShell ISEが起動しない方は休憩後の スクリプト演習までに.NET Framework 3.5 Service Pack 1 のインストールをお願いし ます。 検索:「 .NET Framework 3.5 sp1」 第一部 コンソールを使ってみよう コンソールを使ってみよう 起動 ◦ スタートメニュー ◦ Win7ならタスクバーにピン留め ◦ ファイル名を指定して実行→powershell.exe まずはコマンドプロンプト感覚でフォル ダの中身を見てみましょう ◦ cd:カレントディレクトリ移動 ◦ dir:カレントディレクトリのファイル一覧表 示 ◦ タブ補完でフォルダ名補完 コマンドレットの基本 cd,dirなどはコマンドレットです。 これらはエイリアス(別名)です。正式 名称は「動詞-名詞」です。 ◦ cd : Set-Location ◦ dir : Get-ChildItem パラメータの指定 ◦ cd FolderName Set-Location -path ".\FolderName" パラメータ名、パラメータ値は省略可能なものがあ る コマンドレット名、パラメータ名もタブ 補完できます。 コマンドレットを調べる コマンドレット情報取得 ◦ Get-Command ◦ Get-Command -noun Location ◦ Get-Command *wmi* -type cmdlet ヘルプを引く ◦ ◦ ◦ ◦ ◦ ◦ Get-Help Set-Location Set-Location -? Get-Help Set-Location -detailed Get-Help -category helpfile help Set-Location HTMLヘルプもあります。 ファイルシステムの操作 -whatIf と -confirmパラメータで実行確認を! フォルダ作成(作業用フォルダ) ◦ New-Item -type Directory PSハンズオン カレントフォルダをエクスプローラで開く ◦ Invoke-Item . テキストファイル作成 ◦ Set-Content test.txt -Value てすと! テキストファイルの表示 ◦ Get-Content test.txt ファイルコピー ◦ Copy-Item test.txt test2.txt ファイルリネーム ◦ Rename-Item test2.txt backup.txt ファイル削除 ◦ Remove-Item *.txt レジストリドライブ レジストリドライブを表示する ◦ Get-PSDrive cd HKCU: dir Get-ItemProperty .\Console ファイルシステム以外のリソースに対 しても共通のコマンドレットが使える 選択と列挙 コマンドレットが返すオブジェクト配列をパ イプラインを通して後続コマンドレットに。 プロパティとメソッド列挙:Get-Member ◦ dir|Get-Member フィルタ:Where-Object ◦ dir|Where {$_.Extension -eq ".txt"} 選択:Select-Object ◦ dir|Select Name, CreationTime,Extension 列挙:ForEach-Object ◦ dir|ForEach {Write-Host $_.FullName} 結果の整形、出力形式、出力先 変更 出力フォーマット変更 ◦ 表:Format-Table ◦ リスト:Format-List ◦ 一覧:Format-Wide 出力テキスト形式変更 ◦ CSV:ConvertTo-CSV ◦ HTML:ConvertTo-HTML ◦ XML:ConvertTo-XML 出力先変更 ◦ ウィンドウ:Out-GridView ◦ ファイル プレーンテキスト:Out-File CSV:Export-CSV XML:Export-CliXml ◦ 文字列化:Out-String 各種システム情報を取得 プロセス取得:Get-Process サービス取得:Get-Service イベントログ取得:Get-EventLog ◦ イベントログの種類:Get-EventLog -list Windowsイベントログ:Get-WinEvent 必要な情報をフィルタ、選択したり、 出力形式を変更したりしてみよう! システム情報取得・設定(WMI) WMIを利用するコマンドレット ◦ ◦ ◦ ◦ ◦ Get-WmiObject -list Get-WmiObject Win32_OperatingSystem Invoke-WmiMethod Get-HotFix Restart-Computer 第一部のまとめ コンソールにコマンドレットを入力す るとシステム情報の取得や設定ができ る。 色々なリソースをPSドライブとして扱 え、共通のコマンドレットが使用でき る。 コマンドレットが返すオブジェクト配 列はフィルタや列挙ができる。 コマンドレットの出力先や形式を変更 できる。 第二部 スクリプトを書いてみよう ISEでスクリプトを書いてみよう スタートメニューorタスクバーから起 動 基本はコンソールに入力していたコマ ンドを改行区切りで記述していくだ け! スクリプトペインにスクリプトを書き、 コマンドペインでそれを呼び出し、結 果ペインに結果が表示される。 スクリプトを実行してみよう ExecutionPolicy設定 ◦ Set-ExecutionPolicy RemoteSigned 実行 ◦ ◦ ◦ ◦ ◦ ISEで powershell.exeで ショートカット作成 タスクスケジューラ プロファイル PowerShell構文 変数 ◦ $変数名 文字列 ◦ "文字列"か'文字列' コメント ◦ #コメント行 演算子 ◦ 算術:+ - 比較: -eq -lt -le -gt -ge 論理:-or -and 配列 ◦ $a=@(1,2,3 ) ◦ $a[0] if(条件){} foreach($item in $items){} 関数 ◦ function Get-Text{param($text)Write-Host $text} .NETの呼び出し インスタンス作成 ◦ $client=New-Object System.Net.WebClient スタティックメンバ呼び出し ◦ スタティックメンバの調査 [System.Environment]|Get-Member -static ◦ [System.Environment]::OSVersion ◦ [Math]::Sqrt(4) 第三部 POWERSHELLリモート 体験 リモート準備 PSリモートを有効に(要管理者権限) ◦ Enable-PSRemoting PSリモート接続先を指定(要管理者権 限) ◦ Set-Item WSMan:\localhost\Client\TrustedHosts -value * バックグラウンドジョブ実行 ジョブの開始 ◦ Start-Job {スクリプト} ジョブの結果を受け取る ◦ Get-Job|Wait-Job|Receive-Job リモートコンピュータでコマン ド実行 リモート実行(ここではローカルPC に対してテスト。要管理者権限) ◦ Invoke-Command {スクリプト} ComputerName コンピュータ名 ローカルPCならコンピュータ名は「.」 リモートセッション 固定接続セッションをリモートコン ピュータに対して作成(ここではロー カルに対して。要管理者権限) ◦ $session=New-PSSession . Invoke-Command {スクリプト} -Session $session 対話型セッションの開始 ◦ Enter-PSSession $session 本日のまとめと後処理 設定を元に戻す ExecutionPolicy ◦ Set-ExecutionPolicy restricted PSリモート ◦ Disable-PSRemoting PSリモートの接続先 ◦ Set-Item WSMan:\localhost\Client\TrustedHosts -value "" 本日のまとめ PowerShellを用いるとWindowsシステ ム管理が行えます。 コンソールで対話的に実行することも、 スクリプト化して繰り返し処理、自動 処理、定期実行処理なども可能です。 リモート機能を使うとサーバーやPC の管理を遠隔で行えます。複数コン ピュータで同じ処理を同時に行うこと も。 Have a happy PowerShell Life! お疲れ様でした!
© Copyright 2024 ExpyDoc