私は、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).Yearwrite-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秒"
とりあえず、今日はここまで。


