有馬総一郎のブログ

(彼氏の事情)

PowerShellを使ってみる その1

私は、MS-DOSやVBSとか好きだ。制限された中で、いかに頭を使って、書くのが面白いと思うんだけどね。とは、MS-DOSのコマンドは基本SJIS対応で、Unicode対応してないので、折角だからと、PowerShellを使って見ることにした。

  • PowerShellのバージョン確認

      (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine).PowerShellVersion
    
  • PowerShellスクリプトファイル

    拡張子は。ps1。スクリプトファイルとして実行にするだけで手間がかかる。

有馬総一郎のブログ

  • 実行ポリシー確認。

    Get-ExecutionPolicy

    • Restricted

      デフォルト。PowerShellは対話的にしか入力できないようになっている。スクリプト実行不可。

    • Remote Signed

      ローカルで作成した、信頼できる発行元が署名したPowerShellスクリプトの実行が可能。

    他にもあるが、とりあえず、Remote Signedにしておく。

  • 実行ポリシー変更。

    Set-ExecutionPolicy RemoteSigned

有馬総一郎のブログ

この時、管理者としてPowerShellを起動していないとアクセス拒否。どんだけ強固なんだよ。

有馬総一郎のブログ

  • 取得オブジェクトの変数、メソッドを知る。これなくては何もできん。

    Get-Member

  • ヘルプ。

    Get-Help

  • 文字列

    "の場合、変数を展開。'は、$もそのまま文字として扱う。

  • 文字列連結

    • 配列の連結

      Join(配列の各要素の間に挿入する文字, 配列変数)

    • 通常の連結

      +

  • ヌルとの比較は$nullを使う。

    $a -eq $null

  • コマンド結果のプロパティからそのまま参照したい

    write-output (Get-Date).Year

    write-output Get-Date.Yearだとエラー、| $_.Yearで繋げてもエラー

  • スクリプト自身のパス

    $MyInvocation.MyCommand.Path

  • スクリプト名は

    $MyInvocation.MyCommand.Name

  • Write-Host は改行なしで出力し、Write-Output は改行あり(ほかにも違いは、いっぱいあるが)

  • ネットワークドライブの追加

    New-PSDrive -Name [ドライブ名] -PSProvider [プロバイダー] -Root "\\UBUNTU\arimasou16"

    • Providerの種類

      • Alias(エイリアス)
      • Certificate(デジタル署名)
      • Environment(環境変数)
      • Registry(レジストリ)
      • FileSystem(ファイルシステム)
      • Variable(変数)
      • WSMan(WinRMサービス)

    New-PSDrive -Name Ubuntu -PSProvider FileSystem -Root "\\192.168.x.x\arimasou16"

      Name Used (GB) Free (GB) Provider Root CurrentLocation
      ---- --------- --------- -------- ---- ---------------
      Ubuntu FileSystem \\192.168.x.x\arimasou16
    
  • ファイルパスの解析

    Split-Path(古いバージョンだとparse-pathらしい)
    親フォルダの取得
    Split-Path "C:\Program Files\Microsoft Command Shell" -parent

  • 時刻の取得

    Get-Date
    フォーマットを指定しての取得 Get-Date -Format "yyyy/MM/dd HH時mm分ss秒"

とりあえず、今日はここまで。

Comments