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
PSSessionWinRMを使ってる
sshみたいなもんだと思っていいんじゃないでしょうか
そうでもない
Enable-PSRemotingリモート操作される準備を全部やってくれる素敵Cmdlet
これ叩いてエラー出なけりゃOK
エラー出ても対処して出なくなるまで叩けばOK
TrustedHost名前の通り信頼される端末のホスト名を教えてやる必要がある
するとリモート接続できるようになる
本来ホスト名を書くんだろうけどどこの解説見ても
*(どいつもこいつもばっちこい) を指定しとけ
としか説明されてなくて書式とかよくわかんない
いざとなったら.Net使えるからなんでもできちゃう
C#で書いたコードをとり込んだりも出来る
C#でP/InvokeしちゃえばWinAPIも叩ける
強力すぎるのでちゃんと意識しないとえーってなる
*.ps1 ファイル当然バッチスクリプト的に書けるし、ファイル1個をひとつの関数の様にも書ける
ただし実行するには下記の実行ポリシーなるもので許可されてないとダメ
*-ExecutionPolicy基本は署名されてないと動かないから安心、みたいな仕組み
穴が多い
$PROFILEこういったものをまとめて
Windows10にプリインストールされてるよ
そうじゃなくてもWMF5.0Preview版インストールすれば使える
PackageManagementchocolateyなんかもラップされてる従来はC#でクラス定義書いて型を追加す必要があった
列挙型も同様
クラスはPrivateなメンバが作れないのとかちょっとうーん…な感じ
メソッドの書き方なんかがPowerShell的じゃないからそこもちょっとね
でも実際はさくっとクラスかけるととても便利だった
Enumはけっこう使いたいのでとてもありがたい
シンボリックリンクが作れるようになった
PS> New-Item -Name hoge -ItemType SymbolicLink -Target c:\hoge
けど削除ができないとかまだ微妙
Windows10だとプリインストールされてる
こいつのおかげで操作性がものすごく向上した
WMF5.0Previewだと入ってないので上記のパッケージ管理使って入れようね
