11/12 PowerShell勉強会用 お品書き
日常生活で使うPowerShellのお話
DSCとかは全然知識ないので話せません!ごめんね!
あれは人間が使うようにできていないからやめましょうね
わかりましたか、はい
cmd
でできてPowerShell
でできないことはあるの?たまにある、mklink
とか
まぁでもそういう場合だけ cmd /c hogehoge
すればいいよね
なんかわかんないことあったらとりあえず help
する
PS> help Some-ComdletThatYouWantToKnowAbout
Verb-Noun
形式のコマンド例えば Get-ChildItem
というコマンドレットには
dir
, ls
, gci
といった別名がついてるよ
なんかは必要に応じて任意に別名付けられる
Set-Alias -Name subl -Value 'C:\Program Files\Sublime Text 3\sublime_text.exe'
とにかくあらゆるとこでTAB補完がわりと強力に効くので素敵です
いいことです
PowerShellのTAB補完はワイルドカード入れてやるとよりハッピーになれる
# フォルダ作ってそこに移動とか楽にできる
PS> md hoge | Convert-Path | cd
パイプで値を受けられるパラメータを持つコマンドをパイプ先に出来る
パイプで渡るのは
※パラメータがどっちを指定してるかによる
1..10 | % {ni -Path . -Name "$_.txt" -ItemType File}
ls *.txt | ? {$_.BaseName % 2 -eq 1} | select FullName
PSSession
WinRM
を使ってる
sshみたいなもんだと思っていいんじゃないでしょうか
そうでもない
Enable-PSRemoting
リモート操作される準備を全部やってくれる素敵Cmdlet
これ叩いてエラー出なけりゃOK
エラー出ても対処して出なくなるまで叩けばOK
TrustedHost
名前の通り信頼される端末のホスト名を教えてやる必要がある
するとリモート接続できるようになる
本来ホスト名を書くんだろうけどどこの解説見ても
*
(どいつもこいつもばっちこい) を指定しとけ
としか説明されてなくて書式とかよくわかんない
いざとなったら.Net
使えるからなんでもできちゃう
C#で書いたコードをとり込んだりも出来る
C#でP/InvokeしちゃえばWinAPIも叩ける
強力すぎるのでちゃんと意識しないとえーってなる
*.ps1
ファイル当然バッチスクリプト的に書けるし、ファイル1個をひとつの関数の様にも書ける
ただし実行するには下記の実行ポリシーなるもので許可されてないとダメ
*-ExecutionPolicy
基本は署名されてないと動かないから安心、みたいな仕組み
穴が多い
$PROFILE
こういったものをまとめて
Windows10にプリインストールされてるよ
そうじゃなくてもWMF5.0Preview版インストールすれば使える
PackageManagement
chocolatey
なんかもラップされてる従来はC#でクラス定義書いて型を追加す必要があった
列挙型も同様
クラスはPrivateなメンバが作れないのとかちょっとうーん…な感じ
メソッドの書き方なんかがPowerShell的じゃないからそこもちょっとね
でも実際はさくっとクラスかけるととても便利だった
Enumはけっこう使いたいのでとてもありがたい
シンボリックリンクが作れるようになった
PS> New-Item -Name hoge -ItemType SymbolicLink -Target c:\hoge
けど削除ができないとかまだ微妙
Windows10だとプリインストールされてる
こいつのおかげで操作性がものすごく向上した
WMF5.0Previewだと入ってないので上記のパッケージ管理使って入れようね