彷徨うITエンジニアの雑記

ITインフラ関連の雑記とか

Powershellメモ3

簡易的な進捗カウンタをコンソールに表示したい

  • Write-Host -NoNewline ("`r" + "hogehoge") を使う
  • `r = CR(キャリッジ・リターン)でカーソルが左端に移動してコンソール表示を上書き
$N = 1000
for($i = 0; $i -lt $N; $i++) {

    # 進捗を10単位でコンソールに表示
    if(($i % 10) -eq 0){ Write-Host -NoNewline ("`r" + "PROGRESS: ${i} / ${N}") }

    # 処理
    $null = Start-Sleep -Milliseconds 100
}

UNIXシェルみたいに、コマンド出力をそのまま文字列として扱いたい

  • Out-String でオブジェクトを文字列の配列に変換
  • Stream オプションを付けないと1個の文字列の要素にまとめられてしまうので注意
> Get-ChildItem

    ディレクトリ: C:\Users\hoge


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2020/04/06     16:58                .android
d-----        2021/01/06     12:26                .Azure
d-r---        2020/06/14      0:39                3D Objects
d-----        2020/03/21     22:36                Apple
d-r---        2020/06/14      0:39                Contacts
d-----        2020/03/21     23:47                Documents
d-r---        2021/01/30      7:58                Downloads
d-r---        2020/06/14      0:39                Favorites
d-r---        2021/01/30      8:02                Google ドライブ
d-r---        2020/06/14      0:39                Links
d-r---        2020/06/14      0:39                Music
dar--l        2021/01/30      8:01                OneDrive
d-----        2020/03/22      1:00                Pictures
d-r---        2020/06/14      0:39                Saved Games
d-r---        2020/06/14      0:39                Searches
d-r---        2020/09/16     17:47                Videos


> Get-ChildItem | select-string 'Apple'

Apple


> Get-ChildItem | Out-String -Stream | select-string 'Apple'

d-----        2020/03/21     22:36                Apple