PowerShellメモ
WinActorのシナリオの実行はバッチファイルから起動しています。シナリオ起動前の共通処理として、デスクトップのスクリーンショット、メール送信、エクセルファイルの読み書きをしたいです。
PowerShellで実行可能そうなので調べました。
PowerShell(パワーシェル)は、マイクロソフトが開発した拡張可能なコマンドラインインターフェイス (CLI) シェルおよびスクリプト言語である。オブジェクト指向に基づいて設計されており、.NET Framework (Windows PowerShell 5系以前) あるいは.NET Core (PowerShell Core 6系以降) を基盤としている
PowerShellには2種類ある
- Windows PowerShell Windowsのみ(標準インストール) ver5.1まで
- PowerShell マルチプラットフォーム ver6以降
Windows PowerShellの起動方法
- スタートメニュー → Windows PowerShellフォルダ → Windows PowerShell
- 検索 → PowerShell
- Windowsキー+R → powershell
- エクスプローラー → ファイル → Windows PowerShellを開く
- エクスプローラー → アドレスバーに powershell
PowerShellのバージョンを調べる
- Get-Host コマンドレット
- (Get-Host).Version 特定のプロパティを表示
- $PSVersionTable 変数
- $PSVersionTable.PSVersion 特定のプロパティを表示
- $Host 変数
- $Host.Version 特定のプロパティを表示
管理者として実行
タスクバーのアイコンを右クリックで管理者として実行にチェックを入れると、常時管理者で起動できる
コマンドレット
コマンドレットを使ってPCに指示する。動詞-名詞 の命名規則がある。動詞の部分はある程度、パターンがある。Get-名詞 Start-名詞
最初に覚えるコマンドレット
Get-Command コマンドを調べる
Get-Help コマンドの使い方を調べる
Get-Menber 成果物のオブジェクトについて調べられる
Get-Command
Tabキーで補完できる
Get-Command Get-*
Getで始まるコマンドを調べる
Get-Help Get-Command
Get-Help <コマンドレット> コマンドの使い方を調べることができる
Get-Help Get-Command -Detailed
詳細に表示
Get-Menber
オブジェクトのプロパティやメソッドを調べれる
コマンドレットの成果物=オブジェクト
$date = Get-Date
$date | Get-Member パイプで渡す!
$date.Month
$date.AddDays(1)
コマンドレットのパラメーター
Get-ChildItem
Get-ChildItem -Path .\dir1\ ←パラメーター値
Get-ChildItem -Recurse ←パラメーターの引数が不要のものをスイッチパラメーターという
Get-ChildItem -r ←ほかのパラメーターと被らなければ省略可能
パラメーターを知りたいとき
ハイフンを入力後、Ctrl+スペース
パラメーターの有効・無効
Get-ChildItem -Recurse:$true 有効
Get-ChildItem -Recurse:$false 無効
複数のパラメーター
カンマで区切る
Get-Process -Name chrome,explorer
Splatting スプラッティング
$param = @{Name="notepad"}
Get-Process @param
Stop-Process @param
エイリアス
コマンドレットにはエイリアスがある
Get-Alias -Definition Get-ChildItem
端末やターミナルの入力が楽。スクリプトファイルのなかでは正式名称を推奨。
変数
PowerShellでは「変数」を利用できる。コマンドプロンプトの変数は文字列だが、PowerShellの変数はオブジェクトを代入できる。
先頭に「$」を付けた任意の文字列で変数を利用できる。また、PowerShellが自動的に作成する自動変数もある。
現在設定されている変数の一覧は「Get-Variable」で確認できる。
「$_」変数にはパイプラインの前段の実行結果が格納される。
関数
あらかじめ作成している関数の一覧は「Get-ChildItem Function:」で表示できる。
コマンド(実行可能ファイル)を実行するには
PS C:\Program Files\Internet Explorer> .\iexplore.exe (exeは省略可能)
カレントディレクトからパスを指定している ./iexploreでも可能
パスが通っている場合はそのまま notepad (exeは省略可能)
notepad.exeはsystem32ディレクトリにあり、パスが通ている
パスに空白がある場合、アンパサンドを使う & 'C:\Program Files\Internet Explorer\iexplore.exe’
PowerShell の起動
powershell -ExecutionPolicy RemoteSigned -File “C:\Script\Test.ps1"
PowerShellは、コマンドライン引数で実行ポリシーを変更できるようになっているので、起動用のバッチファイルから「powershell.exe -ExecutionPolicy RemoteSigned スクリプトファイル名」のようにして起動すると、スクリプトファイルが実行されるようになります。
ディスカッション
コメント一覧
まだ、コメントがありません