Memo/Windows/PowerShell

https://dexlab.net:443/pukiwiki/index.php?Memo/Windows/PowerShell
 

PowerShell

Windows_PowerShell - wikipedia
Windows PowerShell は、マイクロソフトが開発した拡張可能なコマンドラインインターフェース (CLI) シェルおよびスクリプト言語である。オブジェクト指向に基づいて設計されており、.NET Framework 2.0 を基盤としている。

環境変数

  • 一覧
    Get-ChildItem env:
    
    Name                           Value
    ----                           -----
    ALLUSERSPROFILE                C:\ProgramData
    APPDATA                        C:\Users\user01\AppData\Roaming
    ChocolateyPath                 C:\Chocolatey
    CommonProgramFiles             C:\Program Files\Common Files
    ...
  • 一部だけ表示。echoは省略できる
    echo $env:LOCALAPPDATA
    C:\Users\user01\AppData\Local
    
    echo $env:APPDATA
    C:\Users\user01\AppData\Roaming
  • 設定
    $env:MYENV1 = "Hello"
    
    $env:MYENV1
    Hello

ヘルプの表示

  • 初回最新のヘルプがダウンロードされる
    Get-Help

find風の結果を得る

  • find -ls:
    gci -r

サービス一覧を取得

  • スタートアップの種類は紛らわしい
    • 自動:OS起動時に起動
    • 手動:ポートに要求があれば自動起動
    • 無効:起動を禁止
  • スタートアップ種類が手動(ポートにリクエストがあったら自動起動)で、起動しているサービス一覧
    powershell
    Get-Service | where StartType -eq Manual | where Status -eq Running
    
    Status   Name               DisplayName
    ------   ----               -----------
    Running  Appinfo            Application Information
    Running  AppMgmt            Application Management
    ...

zipファイルを展開せずにファイル名やファイルサイズで検索

  • 7z.exe を利用
  • hoge.jpg を検索
    powershell
    > get-childitem . -include *.zip -recurse | foreach ($_) { .\7z.exe l $_.name | Select-String "hoge.jpg" }

WMIからHDD SMART情報を取得

  • fileget-smart.ps1
    powershell ./get-smart.ps1
    
    ########
    Active: True
    InstanceName: IDE\DiskWDC_WD10EALX-759BA1_____________________19.01H19\4&1d873d54&0&0.0.0_0
    Length: 512
    bAttrID wStatusFlags bAttrValue bWorstValue bRawValue[6]
       1  47   0 200 200   0   0   0   0   0   0
       3  39   0 177 174  54  16   0   0   0   0
       4  50   0 100 100 239   1   0   0   0   0
       5  51   0 200 200   0   0   0   0   0   0
       7  46   0 200 200   0   0   0   0   0   0
       9  50   0  95  95 154  16   0   0   0   0
      10  50   0 100 100   0   0   0   0   0   0
      11  50   0 100 100   0   0   0   0   0   0
      12  50   0 100 100 237   1   0   0   0   0
     192  50   0 200 200  19   0   0   0   0   0
     193  50   0 200 200 219   1   0   0   0   0
     194  34   0 108 103  39   0   0   0   0   0
     196  50   0 200 200   0   0   0   0   0   0
     197  50   0 200 200   0   0   0   0   0   0
     198  48   0 100 253   0   0   0   0   0   0
     199  50   0 200 200   0   0   0   0   0   0
     200   8   0 100 253   0   0   0   0   0   0
     240  50   0  95  95  13  16   0   0   0   0
     241  50   0 200 200  92 134 168  41   2   0
     242  50   0 200 200   4 174  82 249   1   0

PowerShellの終了コードをcmd.exeに渡す

PowerShell内で「exit 2」としても、「echo %ERRORLEVEL%」は全て"1"になる。
以下のようにすれば取得できるようだ

powershell -NoProfile -command ".\test.ps1;exit $LASTEXITCODE"
echo %ERRORLEVEL%

PowerShellを実行可能にする

デフォルトでは実行不可になっている。

  • ローカルに保存されているスクリプトは実行可能、インターネット上のスクリプトは実行不可
    powershell Set-ExecutionPolicy RemoteSigned

添付ファイル: fileget-smart.ps1 470件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-11-22 (木) 15:24:19 (26d)