32
PowerShell ハハハハハ 2012/03/24 ハ 27 ハ .NET ハハハ / ハハハハハ ハハハハハ

PowerShell ハンズオン

Embed Size (px)

DESCRIPTION

PowerShell ハンズオン. 2012/03/24 第 27 回 .NET 勉強会 / ヒーロー 島 牟田口大介. PowerShell ハンズオンの準備、諸注意. 講師自己紹介. 牟田口大介 ライターやってます 2008 Windows PowerShell ポケットリファレンス(技術評論社) 2009 PowerShell による Windows サーバ管理術(ソフトバンククリエイティブ、共著) - PowerPoint PPT Presentation

Citation preview

Page 1: PowerShell ハンズオン

PowerShell ハンズオン2012/03/24第 27 回 .NET 勉強会 / ヒーロー島牟田口大介

Page 2: PowerShell ハンズオン

POWERSHELLハンズオンの準備、諸注意

Page 3: PowerShell ハンズオン

講師自己紹介 牟田口大介 ライターやってます

◦ 2008 Windows PowerShell ポケットリファレンス(技術評論社)

◦ 2009 PowerShell による Windows サーバ管理術(ソフトバンククリエイティブ、共著)

◦ 2010 ~ PowerShell 的システム管理入門( @IT ) http://www.atmarkit.co.jp/fwin2k/operation/pshsys01/pshsys01_01.html

Microsoft MVP for PowerShell◦ 昨年 7 回目の受賞をさせていただきました

http://winscript.jp/ http://twitter.com/mutaguchi http://www.facebook.com/daisuke.mutaguchi

Page 4: PowerShell ハンズオン

アジェンダPowerShell ハンズオンの準備、諸注

意第一部:コンソールを使ってみよう休憩第二部:スクリプトを書いてみよう第三部: PowerShell リモート体験

◦↑ 時間があれば…本日のまとめと後処理

Page 5: PowerShell ハンズオン

本日の目標PowerShell コンソールの使い方を理

解する簡単な PowerShell スクリプトを作成

して実行する方法を理解するPowerShell リモートの概念を理解し、

バックグラウンド処理とリモート処理の仕方を理解する(時間があれば)

Page 6: PowerShell ハンズオン

ハンズオンの諸注意PowerShell はシステム管理シェルで、その名の通

り強力です。よって、オペレーションミスでファイルや設定などを壊してしまう可能性があります。

PowerShell は UAC をオンにした上で昇格せずに起動してください。(指示があるときを除く)

Get-* 以外のコマンドレットを実行する際は以下の共通パラメータを使い確認を◦ -whatIf ( 実行した場合何が起こるか表示 )◦ -confirm ( 実行する前に実行確認表示 )

分からないことがあればいつでも聞いてください!!

Page 7: PowerShell ハンズオン

準備PowerShell のインストールは済んでい

ますか? (XP,Vista の方! )◦「スタート」 - 「すべてのプログラム」 - 「ア

クセサリ」 - 「 Windows PowerShell 」◦まだの方はインストールをお願いします。

検索:「 Windows PowerShell 2.0 」◦PowerShell ISE が起動しない方は休憩後の

スクリプト演習までに .NET Framework 3.5 Service Pack 1 のインストールをお願いします。 検索:「 .NET Framework 3.5 sp1 」

Page 8: PowerShell ハンズオン

コンソールを使ってみよう第一部

Page 9: PowerShell ハンズオン

コンソールを使ってみよう起動

◦ スタートメニュー◦Win7 ならタスクバーにピン留め◦ ファイル名を指定して実行→ powershell.exe

まずはコマンドプロンプト感覚でフォルダの中身を見てみましょう◦cd :カレントディレクトリ移動◦dir :カレントディレクトリのファイル一覧表

示◦ タブ補完でフォルダ名補完

Page 10: PowerShell ハンズオン

コマンドレットの基本cd,dir などはコマンドレットです。これらはエイリアス(別名)です。正式名称

は「動詞 - 名詞」です。◦cd : Set-Location◦dir : Get-ChildItem

パラメータの指定◦cd FolderName

Set-Location -path ".\FolderName" パラメータ名、パラメータ値は省略可能なものがある

コマンドレット名、パラメータ名もタブ補完できます。

Page 11: PowerShell ハンズオン

コマンドレットを調べるコマンドレット情報取得

◦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 ヘルプもあります。

Page 12: PowerShell ハンズオン

ファイルシステムの操作 -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

Page 13: PowerShell ハンズオン

レジストリドライブレジストリドライブを表示する

◦Get-PSDrivecd HKCU:dirGet-ItemProperty .\Console

ファイルシステム以外のリソースに対しても共通のコマンドレットが使える

Page 14: PowerShell ハンズオン

選択と列挙コマンドレットが返すオブジェクト配列を

パイプラインを通して後続コマンドレットに。

プロパティとメソッド列挙: 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}

Page 15: PowerShell ハンズオン

結果の整形、出力形式、出力先変更出力フォーマット変更

◦ 表: 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

Page 16: PowerShell ハンズオン

各種システム情報を取得プロセス取得: Get-Processサービス取得: Get-Serviceイベントログ取得: Get-EventLog

◦イベントログの種類: Get-EventLog -list

Windows イベントログ: Get-WinEvent

必要な情報をフィルタ、選択したり、出力形式を変更したりしてみよう!

Page 17: PowerShell ハンズオン

システム情報取得・設定 (WMI)

WMI を利用するコマンドレット◦Get-WmiObject -list◦Get-WmiObject

Win32_OperatingSystem◦Invoke-WmiMethod◦Get-HotFix◦Restart-Computer

Page 18: PowerShell ハンズオン

第一部のまとめコンソールにコマンドレットを入力する

とシステム情報の取得や設定ができる。色々なリソースを PS ドライブとして扱

え、共通のコマンドレットが使用できる。コマンドレットが返すオブジェクト配列

はフィルタや列挙ができる。コマンドレットの出力先や形式を変更で

きる。

Page 19: PowerShell ハンズオン

スクリプトを書いてみよう第二部

Page 20: PowerShell ハンズオン

ISE でスクリプトを書いてみようスタートメニュー or タスクバーから

起動基本はコンソールに入力していたコマ

ンドを改行区切りで記述していくだけ!

スクリプトペインにスクリプトを書き、コマンドペインでそれを呼び出し、結果ペインに結果が表示される。

Page 21: PowerShell ハンズオン

スクリプトを実行してみようExecutionPolicy 設定

◦Set-ExecutionPolicy RemoteSigned実行

◦ISE で◦powershell.exe で◦ショートカット作成◦タスクスケジューラ◦プロファイル

Page 22: PowerShell ハンズオン

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}

Page 23: PowerShell ハンズオン

.NET の呼び出しインスタンス作成

◦$client=New-Object System.Net.WebClient

スタティックメンバ呼び出し◦スタティックメンバの調査

[System.Environment]|Get-Member -static

◦[System.Environment]::OSVersion◦[Math]::Sqrt(4)

Page 24: PowerShell ハンズオン

POWERSHELLリモート体験

第三部

Page 25: PowerShell ハンズオン

リモート準備PS リモートを有効に(要管理者権限)◦Enable-PSRemoting

PS リモート接続先を指定(要管理者権限)◦Set-Item WSMan:\localhost\Client\

TrustedHosts -value *

Page 26: PowerShell ハンズオン

バックグラウンドジョブ実行ジョブの開始

◦Start-Job { スクリプト }ジョブの結果を受け取る

◦Get-Job|Wait-Job|Receive-Job

Page 27: PowerShell ハンズオン

リモートコンピュータでコマンド実行リモート実行(ここではローカル PC

に対してテスト。要管理者権限)◦Invoke-Command { スクリプト } -

ComputerName コンピュータ名 ローカル PC ならコンピュータ名は「 . 」

Page 28: PowerShell ハンズオン

リモートセッション固定接続セッションをリモートコン

ピュータに対して作成(ここではローカルに対して。要管理者権限)◦$session=New-PSSession .

Invoke-Command { スクリプト } -Session $session

対話型セッションの開始◦Enter-PSSession $session

Page 29: PowerShell ハンズオン

本日のまとめと後処理

Page 30: PowerShell ハンズオン

設定を元に戻すExecutionPolicy

◦Set-ExecutionPolicy restrictedPS リモート

◦Disable-PSRemotingPS リモートの接続先

◦Set-Item WSMan:\localhost\Client\TrustedHosts -value ""

Page 31: PowerShell ハンズオン

本日のまとめPowerShell を用いると Windows シ

ステム管理が行えます。コンソールで対話的に実行することも、

スクリプト化して繰り返し処理、自動処理、定期実行処理なども可能です。

リモート機能を使うとサーバーや PCの管理を遠隔で行えます。複数コンピュータで同じ処理を同時に行うことも。

Page 32: PowerShell ハンズオン

Have a happy PowerShell Life!

お疲れ様でした!