Upload
zephr-cochran
View
84
Download
0
Embed Size (px)
DESCRIPTION
PowerShell ハンズオン. 2012/03/24 第 27 回 .NET 勉強会 / ヒーロー 島 牟田口大介. PowerShell ハンズオンの準備、諸注意. 講師自己紹介. 牟田口大介 ライターやってます 2008 Windows PowerShell ポケットリファレンス(技術評論社) 2009 PowerShell による Windows サーバ管理術(ソフトバンククリエイティブ、共著) - PowerPoint PPT Presentation
Citation preview
PowerShell ハンズオン2012/03/24第 27 回 .NET 勉強会 / ヒーロー島牟田口大介
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
アジェンダ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-PSDrivecd HKCU:dirGet-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 restrictedPS リモート
◦Disable-PSRemotingPS リモートの接続先
◦Set-Item WSMan:\localhost\Client\TrustedHosts -value ""
本日のまとめPowerShell を用いると Windows シ
ステム管理が行えます。コンソールで対話的に実行することも、
スクリプト化して繰り返し処理、自動処理、定期実行処理なども可能です。
リモート機能を使うとサーバーや PCの管理を遠隔で行えます。複数コンピュータで同じ処理を同時に行うことも。
Have a happy PowerShell Life!
お疲れ様でした!