Muni Bus

パソコンの操作方法や設定方法を忘れないようにメモしています。ブログを一回引っ越ししているので、所々表示がかなり乱れています・・・

Windows PowerShell

【PowerShell】ZIP形式の圧縮ファイルを作成する(展開する)

ZIP形式の圧縮ファイルを作成するにはCompress-Archiveコマンドレットを使う。以下は、a.txtとb.txtという2つのテキストファイルからarc.zipという圧縮ファイルを作成した例。 > Get-ChildItem -name *.txt a.txt b.txt > Get-Content a.txt ABC abc 1234 > …

【PowerShell】バージョンを調べる

3つ方法がある。①Get-Hostコマンドレットを使う。②シェル変数$hostを参照する。③シェル変数$PSVersionTableを参照する。 > Get-Host Name : ConsoleHost Version : 5.1.19041.1320 (以下、表示省略) > $host Name : ConsoleHost Version : 5.1.19041.1320 …

【PowerShell】ファイルやディレクトリーの存在を確認する

Test-Pathコマンドレットを使う。存在すればTrue、存在しなければFalseを返す。-PathTypeオプションにLeaf(ファイル)かContainer(ディレクトリー)を指定することで、ファイルかディレクトリーの指定をすることができる。特に指定をしなければ、ファイル…

【Windows PowerShell】バージョンの確認方法

> $PSVersionTableName Value---- -----PSVersion 5.1.18362.628PSEdition DesktopPSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}BuildVersion 10.0.18362.628CLRVersion 4.0.30319.42000WSManStackVersion 3.0PSRemotingProtocolVersion 2.3SerializationVe…

【Windows PowerShell】「新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6」

Windows PowerShellは開発が終了し、PowerShell Coreに移行している。 無料でダウンロードして、簡単にインストールすることができる。 ダウンロード先のトップページはこれ。 https://docs.microsoft.com/ja-jp/powershell/scripting/install/installing-po…

【PowerShell】正規表現を使用して指定のファイル一覧を得る

Get-ChildItemコマンドレットを使うと、フォルダーのファイル一覧を得ることができる。その際に、ワイルドカードを使用することができる。 > Get-ChildItem C:\Windows\*.exe ファイルの指定に正規表現を使いたい場合は、得られた結果をWhere-Objectコマンド…

【PowerShell】文字列の中身をコマンドとして実行する

Invoke-Expressionコマンドレットを使う。 PS > $exe = Invoke-Expression "echo 'A'" PS > $exe A

【PowerShell】初めてPowerShellでスクリプトを実行する際に、エラーメッセージが表示されて実行できない。

PowerShellは初期状態では、インタラクティブシェルとして動作することになっており、悪意を持つPowerShellスクリプトが実行されないように、スクリプトの実行は無効になっている。 PS > .\Test.ps1 .\Test.ps1 : このシステムではスクリプトの実行が無効に…

【PowerShell】コマンドの実行時間を測定する

Measure-Commandコマンドレットを使う。Measure-Commandの後に、実行時間を測定したいコマンドなどを波括弧「{ }」で挟んで入力して、このコマンドレットを実行する。 以下は、フォルダーC:\Windows\SysWOW64(サブディレクトリ内も含む)から、note~で始…

【PowerShell】キー入力待ちの状態にする

[Console]::ReadKey()メソッドを使う。このメソッドを使うことで、コマンドプロンプトのpauseコマンドと同様に、何かしらのキー(Shift、Ctrl、Altは除く)が押されるまで待つ状態を作ることができる。 PS > [Console]::ReadKey($true) | Out-Null

【PowerShell】文字列の入力を読み取る

Read-Hostコマンドレットを使う。このコマンドレットを使うと、Enterキーの入力待ち状態になる。入力された文字列は返される。プロンプトに表示する文字列を指定することができるが、最後に1バイトのコロンが強制的に付与される。 PS > Read-HostabcabcPS > …

【PowerShell】ディレクトリー(サブディレクトリー含む)からファイル名を指定してファイルを検索する

Get-ChildItemコマンドレットは、ファイル名を指定してファイルの検索を行うことができる。-Recurseオプションをつけると、そのフォルダーにある全てのサブディレクトリの中も検索する。 以下は、ディレクトリーC:\Windowsおよびそのサブディレクトリーから…

【Windows PowerShell】ファイルの日付(最終更新日)を得る

Get-ItemPropertyコマンドレットを使用して得られるLastWriteTimeプロパティに、ファイルの最終更新日が格納されている。 PS > (Get-ItemProperty C:\Windows\explorer.exe).LastWriteTime2018年7月6日 23:17:10PS > (Get-ItemProperty C:\Windows\notepad.e…

【Windows PowerShell】ファイルからファイル名のフルパスなどを取り出す

ファイル名から、ファイル名のフルパス、ファイル名から拡張子を取り除いたもの、拡張子のみ、を取り出すには、Get-ChildItemコマンドレットによりファイルを取得して、そのFileInfoオブジェクトのプロパティを参照すると、簡単に取り出せる。 FullName→ドラ…

【Windows PowerShell】ファイルやディレクトリーの存在を確認する

Test-Pathコマンドレットを使う。存在すればTrueを、存在しなければFalseを返す。 PS > Test-Path C:\WindowsTruePS > Test-Path C:\Windows\notepad.exeTruePS > Test-Path C:\Windows\notepadd.exeFalse -PathTypeオプションを使うことで、ディレクトリー…

【PowerShell】エイリアスに割り当てられているコマンドを表示する

Get-Aliasコマンドレットを使用する。以下はMozilla Firefoxの実行ファイルにfireというエイリアスを割り当てた例。 PS > Set-Alias fire 'C:\Program Files\Mozilla Firefox\firefox.exe' Get-Aliasコマンドレットで確認をしてみる。 PS > Get-Alias fireCo…

【Windows PowerShell】定義されているエイリアスを確認する

Get-Aliasコマンドレットは、定義されているエイリアスに割り当てられているコマンドレットを表示する。 PS > Get-Alias echoCommandType Name Definition----------- ---- ----------Alias echo Write-OutputPS > Get-Alias eechoGet-Alias : name 'eecho' …

【Windows PowerShell】エイリアスを設定する

Set-Aliasコマンドレットを使用する。以下は、カレントディレクトリのファイルを表示させるGet-ChildItemコマンドレットにddirというエイリアスを割り当てた例。 PS > ddir用語 'ddir' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプロ…

【Windows PowerShell】文字型の配列を簡単に連結する

文字列の連結には、通常+演算子を使用するが、文字型の配列同士を連結するには、-join演算子を使うと簡単に連結することができる。なお、-join演算子は連結する際に、文字列同士の間に挟む文字列を指定する必要がある為、下記の例では何も挟まないことを「""…

【Windows PowerShell】配列を作成する

「,」もしくは「@()」を使用することで、作成することができる。以下は、それぞれ数値型、文字型の配列を作成している。 PS > $n = 1, 2, 3PS > $n123PS > $s = "A", "B", "C"PS > $sABC 明示的に配列を作成する、要素の無い空の配列を作成する、要素が1つだ…

【Windows PowerShell】アイコンをダブルクリックするだけで実行できるようにする

スクリプトファイルを右クリックして、「ショートカットの作成」でショートカットを作成する。 その新規作成したショートカットを右クリックして、表示されたメニューからプロパティを選択。 「リンク先」にそのスクリプトファイル名がフルパスで入っている…

【Windows PowerShell】Linuxのgrepに相当するコマンドレット

Windows PowerShellでLinuxのgrepに相当する操作をするには、Select-Stringコマンドレットを使う。 PS > Get-Content C:\Windows\win.ini | Select-String fonts [fonts] この例では、ファイルC:\Windows\win.iniからfontsを含む行を抽出している。前後に空…

【Windows Powershell】スクリプトのコマンドライン引数の数を得る

スクリプトを起動時にコマンドラインで与える引数の数を得るには、自動変数$argsを使用する。 hikisu1.ps1という以下のような1行だけのファイルを作成する。 $args.Length スクリプトを実行した結果は以下のとおり。 PS > .\hikisu1.ps10PS > .\hikisu1.ps1 …

【Windows Powershell】文字列の連結

文字列の連結には、演算子+を使用する。以下、例。 PS > $a = "ABC"PS > $b = "DEF"PS > $c = " GHI"PS > $d = $a + $b + $cPS > $dABCDEF GHIPS > $e = $a + "@" + $bPS > $eABC@DEF

【Windows PowerShell】特定のファイル名を指定かつ除外した、ファイルとフォルダーの一覧を表示する

ファイルとフォルダーの一覧を表示するにはGet-ChildItemコマンドレットを使用する。共通パラメーター-pathを使うことで(省略可能)表示するファイルを指定することができる。なお、MS-DOS風にdirというエイリアスが初期状態で設定されておりdirで代用可能…

【Windows PowerShell】パス+ファイル名からなる文字列からパスを取り除く

-replace演算子を使用して正規表現を用いた文字列の置換をすればよい。以下、例。 PS > $fullpath = "C:\abc\efg\hij.klm.nop.qrs"PS > $fullpathC:\abc\efg\hij.klm.nop.qrsPS > $fullpath -replace "^.+\\", ""hij.klm.nop.qrsPS > $st = $fullpath -repla…

【Windows PowerShell】ファイル名からなる文字列から、1つもしくは複数の拡張子を取り除く

-replace演算子を使用して正規表現を用いた文字列の置換をすればよい。以下、例。 PS > $filename = "hij.klm.nop.qrs"PS > $filenamehij.klm.nop.qrsPS > $filename -replace "\.[^.]+$", ""hij.klm.nopPS > $filename -replace "\..+$", ""hijPS > $st = $…

【Windows PowerShell】ファイル名やフォルダー名にスペース(半角空白)が含まれるコマンドを実行する

ファイル名やフォルダー名にスペース(半角空白)が含まれるコマンドを実行するには、実行演算子&(アンパサンド)と’(シングルクォーテーション)を使用する。 以下は、インターネットエクスプローラー(Internet Explorer)をPowerShellから実行する例。…

【Windows PowerShell】配列に要素を追加する

演算子「+」を使って代入すればよい。「+=」も使える。 PS > $ary = 1, "A"PS > $ary1APS > $ary = $ary, 2PS > $ary1A2PS > $ary += "B"PS > $ary1A2B

【Windows PowerShell】配列を作成する

要素をカンマ(,)で区切り、代入演算子「=」で変数に代入すればよい。 PS > $ary = 1, 2, 3, "A", "B", 4PS > $ary123AB4 なお、カンマで区切りを明示しないと配列としては作成されない。以下の例では、最初に文字列として認識され、文字列の結合になって…