手順書pptx - winscript
Download
Report
Transcript 手順書pptx - winscript
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!
お疲れ様でした!