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 スクリプトファイル名」のようにして起動すると、スクリプトファイルが実行されるようになります。

System

Posted by zzz