PowerShell
Get-ChildItemコマンドレットを使い、DirectoryプロパティのNameプロパティを参照する。 PS > (Get-ChildItem C:\Windows\Fonts\ms*.ttc).FullName C:\Windows\Fonts\msgothic.ttc C:\Windows\Fonts\msjh.ttc C:\Windows\Fonts\msjhbd.ttc C:\Windows\Fonts\…
Get-ChildItemコマンドレットを使い、FullNameプロパティを参照する。 PS > Get-ChildItem C:\Windows\Fonts\ms*.ttc ディレクトリ: C:\Windows\Fonts Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2021/06/05 21:05 8990160 msgo…
Get-ChildItemコマンドレットを使う。ファイル名だけ欲しければ-Nameオプションを付ける。Nameプロパティを参照しても結果は同じ。 PS > Get-ChildItem C:\Windows\*.exe ディレクトリ: C:\Windows Mode LastWriteTime Length Name ---- ------------- -----…
Invoke-Itemコマンドレットを使う。以下は「C:\Program Files」を開いた例。 PS > Invoke-Item "C:\Program Files"
次の3つのスクリプトは、C:\Windows\System32以下のすべてのファイルとそのファイルサイズを一覧形式でCSV形式のファイルに出力するスクリプトである。それぞれ全く同じ結果が得られる。 1番目(mc1.ps1)は、ファイルの一覧を変数にすべて格納し、その後、…
3通りの方法がある。 Get-Contentコマンドレットを使う Get-Content変数構文を使う System.IO名前空間のFileクラスのReadAllTextメソッドを使う 1と2は行単位で読み込むが、3は文字単位で読み込む。読み込み速度は早い順に3,2,1。以下はサイズが300万バイト…
動作確認でサイズが非常に大きなテキストファイルが必要なときがあるが、PowerShellでは文字リテラルに*演算子を使うことで、簡単に作成することができる。 以下の例ではWindows環境下においてサイズが5億バイト(≒477 MB)のファイルを、パイプラインを使…
行の最後に「`」(グレーブアクセント)を入力して改行する。 PS > Write-Output ("ABC" + "123") ABC123 PS > Write-Output ("ABC"` >> + "123") ABC123
エスケープシーケンス(画面上で普通に表記できずキーボードからも直接入力できない特別な意味を持つ文字の表記)を行うには、「`」(グレーブアクセント)記号と特定の文字を組み合わせて表現する。 文字列の改行を表記する場合、通常は「`r`n」と入力する…
PS > "ABC" | Out-File temp.txt PS > Format-Hex .\temp.txt パス: ○○○\temp.txt 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 FF FE 41 00 42 00 43 00 0D 00 0A 00 .þA.B.C..... PS > "あいう" | Out-File -Append .\temp.txt PS > Format-…
PowerShellにおけるファイル作成時のデフォルトの文字コードはUTF-16。Out-Fileコマンドレットで試してみる。 PS > "A1`nあい" | Out-File temp.txt PS > Format-Hex .\temp.txt パス: ○○○\temp.txt 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 000000…
絶対パスはGet-ChildItemコマンドレットとFullNameプロパティを使うことで簡単に得ることができる。相対パスはパイプラインで-Relativeオプションを付けたResolve-Pathコマンドレットに渡す。 PS C:\> Set-Location Windows PS C:\Windows> (Get-ChildItem -…
PS C:\> Set-Location C:\Windows\System32 PS C:\Windows\System32> (Get-ChildItem drivers\etc).Name hosts lmhosts.sam networks protocol services PS C:\Windows\System32> (Get-ChildItem drivers\etc).FullName C:\Windows\System32\drivers\etc\hos…
GetTypeメソッドを使う。FullNameプロパティに型の完全修飾名が含まれている。 PS > (1).GetType().FullName System.Int32 PS > (2.3).GetType().FullName System.Double PS > ("A").GetType().FullName System.String PS > (1..10).GetType().FullName Syst…
New-TemporaryFileコマンドレットを使う。使ったらファイル名が返されるのではなく、使った時点でサイズが0のファイルが作成される。このファイルは自動で消されないため、作業が終わったら、手動で削除する必要がある。 PS > $tempfile = New-TemporaryFile…
RegexクラスのSplitメソッドを使う。最初の例ではStringクラスのSplitメソッドを使用しているが、分割の基準となる文字を1つしか指定できないため、うまくいかない。そのため、その次の例のとおりに、正規表現のパターンを「[\s]+」(1つ以上の連続した空白…
Trimメソッドは文字列の前後、TrimStartは前、TrimEndは後の空白を取り除く。 PS > $s = " Hello. " PS > "|" + $s.Trim() + "|" |Hello.| PS > "|" + $s.TrimStart() + "|" |Hello. | PS > "|" + $s.Trimend() + "|" | Hello.| これらのメソッドは、引数に…
コマンドラインで関数を定義したスクリプトを呼び出せばよい。ただし、実行時には実行演算子(&)で呼び出すのではなくドットソースをすること。ドットソースをすることで、スクリプト内で定義された変数と関数は、そのスクリプト終了後も持続する。スクリ…
Set-ItemPropertyコマンドレットとGet-Dateコマンドレットを使う。以下は実際に更新日時を今の日付に修正した例。Set-ItemPropertyコマンドレットはエイリアスspを使用している。 PS > (Get-ChildItem .\text.txt).LastWriteTime 2023年3月30日 22:57:54 PS …
Set-ItemPropertyコマンドレットを使う。-NameオプションにそれぞれCreationTime, LastWriteTime, LastAccessTimeを指定すれば、それぞれの日時を修正することができる。以下の例では、最初にコマンドレットをそのまま使用しているが、それ以降は初期状態で…
System名前空間のGuid構造体のNewGuidメソッドを使う。 PS > [Guid]::NewGuid() Guid ---- bb47f880-1af8-4a71-9faa-2d739b7f6e55 PS > # バイト列で得る。 PS > [Guid]::NewGuid().ToByteArray() 225 238 3 62 117 14 162 68 142 73 168 38 188 122 189 94 …
System.Drawing名前空間のImageクラスとSystem.Drawing.Imaging名前空間のImageFormatクラスを使う。画像ファイルをImageクラスのFromFileメソッドで読み込み、RawFormatプロパティと比較をすればよい。 ImageクラスのRawFormatプロパティは指定したファイル…
System.Drawing.Imaging名前空間のPixelFormat列挙型を使う。ImageクラスのFromFileメソッドで画像を読み込み、PixelFormat列挙型を確認すればよい。 最初にAdd-Typeコマンドレットを使用して、System.Drawing名前空間のクラスを使えるようにする。 PS > Add…
System.Drawing名前空間のImageクラスを使う。FromFileメソッドで画像を読み込み、プロパティを確認すればよい。以下は、横512ピクセル、縦256ピクセル、色数がモノクロ2階調のPNGファイルを読み込んで表示させた例。Width、Height、Sizeプロパティで、それ…
PowerShellにおけるカレントディレクトリは以下の2つが存在する。 プロンプトに表示されているディレクトリ PowerShellのウィンドウを表示するために実行されたpowershell.exe(PowerShellのウィンドウの実体)の作業フォルダー(ディレクトリ) 一般に「カ…
System.IO名前空間のPathクラスのGetFullPathメソッドを使う。このメソッドはファイルやディレクトリの存在の判定するメソッドではなく、あくまでカレントディレクトリを基準にして絶対パスを作るだけであることに注意。 なお、GetFullPathメソッドの基準と…
$null自動変数を使う。以下、実用的ではないがわかりやすい例。 C:\WindowsとC:\の親ディレクトリを取り出そうとするが、C:\Windowsの親ディレクトリはC:\だが、C:\はルートディレクトリであり親ディレクトリがないためにヌルが戻ってくる。それを判定してい…
カルチャ(地域設定)を得るには、Get-Cultureコマンドレットを使う。 PS > Get-Culture LCID Name DisplayName ---- ---- ----------- 1041 ja-JP 日本語 (日本) PS > Get-Culture | Format-List Parent : ja LCID : 1041 KeyboardLayoutId : 1041 Name : j…
StringクラスのFormatメソッドを使う。以下、実行例。 PS > $n = 2 PS > $d = 4.321 PS > $s = "*" PS > [String]::Format("結果[{0,2}] = {1,7:F4} {2}", $n, $d, $s) 結果[ 2] = 4.3210 *
FileInfoクラスの各プロパティを参照する。ファイルを指定すれば、ファイルの置かれたディレクトリ名、ファイル名、拡張子、ファイルの大きさ(バイト単位)、最終書き込み日などを簡単に取り出すことができる。 以下は例としてD:\workに置いたファイルtext.…