Mais conteúdo relacionado
Semelhante a Powershell勉強会 v2 (もっと新しいバージョンがあります) (20)
Powershell勉強会 v2 (もっと新しいバージョンがあります)
- 2. 山本 てつや (通称:ヤマゾン)
• 金融系システムの更改案件にて、
運用スクリプト、配布APの構築を
担当(2017/09〜)
• 最近の夢はRuby on RailsでWEBア
プリを作って、誰かに喜んでもら
うこと
• AWS (Yamazon Web Service)も勉
強中
• 今話題のWEBサイト、「
yamazoon.com 」の管理人
- 8. 1. バッチ (.cmd / .bat)
1. MS-DOS時代からある、今でも利用者の多いスクリプト
2. コマンドがたくさんあって結構なんでもできる
3. 実行ファイルや他のスクリプトを呼び出すのが得意
4. プログラミング言語で行うような構造的な文法記述には
不向き( for 文が独特だったり、エスケープが難しい)
5. 今後もOSバージョンに合わせて拡張され続ける★
- 9. 2. VBS (.vbs)
1. Visual Basic のスクリプト版で、兄弟はVBA
2. Windows歴の長い一定数の人から根強い人気
3. バッチで出来ないことをするために使うことが多
い
4. 今後拡張される予定はない★
- 10. 3. Jscript (.js)
1. JavascriptのMS版として、VBSと同時期に誕生
2. 現場では2〜3年に1回ぐらい見かける気がする (
かなり私見かも)
3. 今後拡張される予定はない★
- 11. 4. Powershell (.ps1)
1. 2006年に誕生した割と新しいスクリプト
2. 各社がPowershell用にコマンドレットを出している(例:AWS Tools
For Powershell、VMware PowerCLI)
3. 利用者数が急増中
4. 今後もOSバージョンに合わせて拡張され続ける★
5. GithubよりLinux,MacOS向けにも展開中
6. 標準で付属しているIDE (ISEエディタ) が便利
- 17. 凡例: ◎ : インストール済み
△ : インストール可能
- : 未対応
バージョン 1.0 2.0 3.0 4.0 5.0
Windows Server 2003
△
SP1
△
SP2
- - -
Windows Server 2003 R2
△
SP1
△
SP2
- - -
Windows Server 2008 -
△
SP1
△
SP2
- -
Windows Server 2008 R2 - ◎
△
SP1
△
SP1
△
SP1
Windows Server 2012 - - ◎ △ △
Windows Server 2012 R2 - - - ◎ △
- 18. バージョン 1.0 2.0 3.0 4.0 5.0
Windows XP x64 △ - - - -
Windows XP
△
SP2
△
SP3
- - -
Windows Vista △
△
SP1
- - -
Windows 7 - ◎
△
SP1
△
SP1
△
SP1
Windows 8 - - ◎ - -
Windows 8.1 - - - ◎ △
Windows 10 - - - - ◎
- 33. 1. バッチ(.bat /.cmd) 実行により起動する場合
• 下記のように記載したバッチを作成 (Call-Hello.ps1)
Powershell -Executionpolicy Unrestricted “C:¥Hello.ps1”
- 62. cp ・・・・・Copy-Item
mv ・・・・・Move-Item
rm ・・・・・Remove-Item
clear (cls) ・・Clear-Host
ps ・・・・・Get-Process
kill ・・・・・Stop-Process
pwd ・・・・Get-Location
tee ・・・・Tee-Object
wget (curl) ・・Invoke-WebRequest
- 67. • (コマンドレット)[n]
• n は 0 から始まる数字で、0を指定すると1行目の出
力が取れる
• Get-Childitem (ls) の出力結果より、1行目を取得
する例
(Get-Childitem)[0]
- 85. 型
⇨代入すると自動で型変換される
• $a = 1 # ⇦System.Int32 (数値)
• $b = "1" # ⇦System.String (文字列)
• $a + $b # ⇦2 ※先の$aの型に $bが変換される
• $b + $a # ⇦11 ※先の$bの型に $aが変換される
- 107. for /f "tokens=3" %1 in ('net config
workstation ^|findstr /R
/c:"^Workstation.*domain.*$"') do
set domainname=%1
- 109. 配列
• $list = @() # ⇦ 空配列作成
• $list = 1,2,3,4 # ⇦ 要素入り配列作成
• $list += 5,6,7,8 # ⇦要素追加①
• $list += 9,”string” # ⇦要素追加②
- 116. 連想配列
• $hash = @{} # ⇦ 空配列作成
• $hash = @{key1=value1} # ⇦ 要素入り配列作成
• $hash += @{key1=value1; key2=value2} # ⇦要素追加①
• $hash[key3] = value3 # ⇦要素追加②
• $hash[key3] = new-value3 # ⇦値変更
• $hash.key1 # ⇦値取り出し
- 127. • ファイル出力
• “Hello” |out-file Hello.txt
• “漢字” |out-file 漢字.txt -encoding unicode
※漢字は文字化けするのでunicodeに変換する
• ファイル入力
• gc Hello.txt # gc はGet-Contentのエイリアス
• gc 漢字.txt
- 144. • CSV出力
• dir |convertto-csv
• dir |export-csv dir.csv -encoding unicode
※コマンドの出力をCSV形式に変換
• CSV入力
• Import-Csv dir.csv
• (Import-Csv dir.csv).fullname # ヘッダ指定
- 206. ※ 続き
trap文で break または continue を指定しない場合、下記のようになる
• $ErrorActionPreference = “stop” で、コマンドレットの実行エラーが
発生したとき
⇨ trap文が実行され、そのままスクリプト終了
• $ErrorActionPreference = “continue”(デフォルトのまま)で、コマンド
レットのオプションに”-ea stop”を指定し、実行エラーが発生した時
⇨ trap文が実行され、エラーの発生した次の行から処理継続
- 208. • trap ステートメント内で、$Error をログファイルに出力
trap { $Error >> c:¥err.log }
※上記はコマンドの出力をリダイレクトするのと等しい。
dir -ea stop 1>>c:¥err.log 2>&1
- 209. • trap ステートメント内で、日付時刻と $Error の内容をログファイルに
出力し、スクリプトを終了する例
trap {
get-date >> c:¥err.log
$Error >> c:¥err.log
break
}
- 211. try {
エラー発生の可能性があるコマンド -ea “stop”
} catch [エラーの型] {
エラー発生時に実行するコマンド
return または exit (処理終了する場合)
}
finally {
# エラー発生有無に関わらず最後に実行するコマンド
}
※[エラーの型]は省略可能。
省略した場合、すべてのエラーがcatchされる(Exceptionクラス)
- 221. # 例1:関数
function hello-yamazoon ($first,$last) {
“Hello ${last} ${first} !! Welcome to Yamazoon !!”
}
# 関数実行
hello-yamazoon “Yamamoto” “Tetsuya”
⇨ Hello Tetsuya Yamamoto !! Welcome to Yamazoon !!
- 222. # 例2:begin process end 関数
function count-value {
begin {
$count = 0
}
process {
$count++
echo “$count 回目の値 : ${_}”
}
end {
echo “数え終わりました。”
}
}