Muni Bus

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

PowerShell

【PowerShell】短い簡単なテキストファイルを作成する

文字列型の変数で配列を作り、それをOut-Fileコマンドレットにパイプラインで渡してファイルに出力すればよい。-Encodingオプションにdefaultを指定すると文字コードをシフトJISで出力する。デフォルトでは各要素を出力した後にCR+LFを加えて、一要素一行と…

【PowerShell】ハッシュテーブル(連想配列)を使う

PowerShellには配列と似たような機能として、ハッシュテーブル(連想配列)というものがある。機能として、一つ以上の値をまとめて格納して扱うことができる変数だが、配列は各要素を取り出す際にインデックス(0から始まる連番)で指定するのに対して、ハッ…

【PowerShell】テキストファイルから文字列を検索する

Select-Stringコマンドレットを使う。Select-StringコマンドレットはUNIXのコマンドの一つであるgrepと同じような機能を提供するが、戻り値がMatchInfoオブジェクトのため、grepコマンドのデフォルトの状態とは異なり、マッチした行だけが表示されるわけでは…

【PowerShell】配列の要素数を得る

LengthプロパティかそのエイリアスであるCountを参照する。 PS > $n = 1..3 PS > $n.Length 3 PS > $n.Count 3

【PowerShell】数列を作成する

..演算子を使う。初項(第1項)と末項(最後の項)を指定する。公差(初項からの増分の定数)は1か-1のみで、初項と末項の値により連続するように自動的に決まるため、任意の値を指定することはできない。ForEach-Objectコマンドレット(エイリアスは%)を使…

【PowerShell】指定のフォルダー以下に存在する、指定のファイル名のファイルとフォルダー名のフォルダーが置かれているフォルダーの更新日時をすべて今の日時にする

以下は、共有フォルダ―\\server1\work1以下に存在する、名前がa~zのファイルとディレクトリについて、それらが置かれているフォルダーの更新日時を今の時間に修正する例。 要するに、\\server1\work1\aというファイルやフォルダーがあれば、フォルダー\\ser…

【PowerShell】指定のフォルダー以下に存在する、指定のファイル名のファイルとフォルダー名のフォルダーの更新日時をすべて今の日時にする

以下は、共有フォルダ―\\server1\work1以下に存在する、名前がa~zのファイルとディレクトリについて、すべて更新日時を今の時間に修正する例。 PS > Get-ChildItem -Path \\server1\work1 -Include [a-z] -Recurse | sp -Name LastWriteTime -Value $(Get-D…

【PowerShell】書式文字列を使って変数の値から文字列を作成する

-f演算子を使う。 PS > $mei = "Kaname" PS > $sei = "Buccaneer" PS > "{0} {1}" -f $mei, $sei Kaname Buccaneer PS > "{0, 10} {1}" -f $mei, $sei Kaname Buccaneer PS > "{0, 2} {1}" -f $mei, $sei Kaname Buccaneer 実数も扱うことができる。 PS > $d…

【PowerShell】正規表現の簡単な動作確認

-match演算子を使うと簡単に動作確認ができる。マッチすればTrueが、マッチしなければFalseが返される。 PS > 'ABC' -match 'A' True PS > 'ABC' -match 'ABC' True PS > 'ABC' -match 'ABCD' False PS > 'ABC' -match '^A' True PS > 'ABC' -match 'A$' Fal…

【PowerShell】ファイルから指定の文字列が含まれる行を抜き出す

Select-Stringコマンドレットを使う。デフォルトでは大文字小文字の違いを無視するため、大文字小文字を区別する場合は-CaseSensitiveオプションを付ける。指定の文字列には正規表現が使える。ファイル名と行番号が表示されるのは仕様で、これを外したい場合…

【PowerShell】dotnet-install.ps1を使う

dotnet-install.ps1とは、.NET SDKと共有ランタイムをインストールすることができる、マイクロソフト公式のスクリプト。以下のページからダウンロードできる。 https://learn.microsoft.com/ja-jp/dotnet/core/tools/dotnet-install-script 途中の「推奨され…

【PowerShell】テキストファイルからコメント行や空白行を取り除く

Where-Objectコマンドレット(エイリアス:?)を利用して-notmatch演算子を使えばよい。以下は、ヒア文字列を使用して複数行からなるtemp.txtというテキストファイルを作成し、それからコメント行(以下の例では#で始まる行)と空白行を取り除いた例。 PS >…

【PowerShell】コンソールへの出力を抑制する

いくつか方法がある。 自動変数$nullにリダイレクトする。 Out-Nullコマンドレットにパイプラインで渡す。 [void]型にキャストする([]演算子を使う) [void]型にキャストする(-as演算子を使う) 以下の例ではNew-Itemコマンドレットでtempディレクトリを作…

【PowerShell】オブジェクトの型を調べる

GetTypeメソッドを使う。FullNameプロパティにオブジェクトの型名が格納されている。リテラルも指定できるし変数を指定できる。 PS > (1).GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Int32 System.ValueType PS …

【PowerShell】年月日時刻の差を求める

New-TimeSpanコマンドレットを使う。以下は3秒間を挟んで2つのDateTimeオブジェクトを取得し、それを比較した例。個別の値が欲しい場合は、プロパティを指定すればよい。 PS > $dt1 = Get-Date; Start-Sleep 3; $dt2 = Get-Date PS > New-TimeSpan $dt1 $dt2…

【PowerShell】現在の年月日時刻を得る

Get-DateコマンドレットかDateTimeオブジェクトのNowプロパティを参照する。 PS > Get-Date 2023年9月2日 23:02:51 PS > [DateTime]::Now 2023年9月2日 23:03:03

【PowerShell】n進数へ変換する

2進数(文字列リテラル)を10進数に変換する場合はConvertクラスのToInt32メソッドを使う。戻り値は整数。 PS > [Convert]::ToInt32("1", 2) 1 PS > [Convert]::ToInt32("10", 2) 2 PS > [Convert]::ToInt32("100", 2) 4 PS > [Convert]::ToInt32("1000", 2)…

【PowerShell】16進数を利用する

0xプレフィックスを使う。プレフィックスを使うことで、数値リテラルとしてそのまま演算もすることができる。 PS > 1 1 PS > 10 10 PS > 0x1 1 PS > 0xa 10 PS > 0xA 10 PS > 1 + 10 11 PS > 1 + 0xa 11

【PowerShell】文字列の配列を簡単に結合する

結合演算子-joinを使う。文字列リテラルを直接結合したい場合は、配列を括弧で囲んでから演算子を利用する。単項演算子として使用すると各文字列の間には何も挟まずに結合する。二項演算子として使用すると、最後に指定した文字を間に挟む。この場合は演算子…

【PowerShell】英数字だけからなる指定の長さのランダムな文字列を得る

Get-Randomコマンドレットを利用する。返される文字に重複がなくてもよければ以下のとおり。-Countオプションには必要な文字列の長さを指定する。Get-Randomコマンドレットの機能上、返される文字列の最大長さは62(=10+26+26)。 PS > -join ((48..57) + (65.…

【PowerShell】英数字だけからなる指定の長さのランダムな文字列を得る

PowerShellには英数字だけからなるランダムな文字列を作成するコマンドレットはない。System名前空間のGuid構造体のNewGuidメソッドで代用することはできるが、英字は大文字か小文字のどちらかになってしまう。なお、マイクロソフトはGUIDの機能に関して、暗…

【PowerShell】指定の長さのランダムな文字列を得る

System.Web.Security.MembershipクラスのGeneratePasswordメソッドを利用する。利用する前には、あらかじめAdd-TypeコマンドレットでSystem.Web名前空間を現在のセッションに追加しておく。第一引数は戻り値の文字列の長さ。第二引数は戻り値の文字列に含め…

【PowerShell】ファイルの絶対パスを得る

Convert-Pathコマンドレットを使う。 PS C:\> Set-Location .\Windows\PLA\Rules PS C:\Windows\PLA\Rules> Get-ChildItem ..\..\*.ini -Name system.ini win.ini PS C:\Windows\PLA\Rules> Get-ChildItem ..\..\*.ini | Convert-Path C:\Windows\system.ini…

【PowerShell】ファイルの相対パスを得る

Resolve-Pathコマンドレットに-Relativeオプションを付けて実行する。 PS C:\> Set-Location .\Windows\PLA\Rules PS C:\Windows\PLA\Rules> Get-ChildItem ..\..\*.ini -Name system.ini win.ini PS C:\Windows\PLA\Rules> Get-ChildItem ..\..\*.ini | Res…

【PowerShell】Out-Fileコマンドレットでデフォルトで出力されるファイルの文字コードと改行コード

試しに以下を実行してみる。 PS > $lines = "ABC", "あいう", "えお" PS > $odir = (gl).Path PS > $lines | Out-File ($odir + "\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 …

【PowerShell】文字コードがシフトJISのテキストファイルから文字を検索する

Select-Stringコマンドレットに-Encodingオプションを使用して実行する。-Encodingオプションにdefaultを指定すると、文字コードをシフトJISとして検索する。以下は、シフトJISでファイルを作成し、それを使用して実際に検索した例。-Encodingオプションを付…

【PowerShell】Windowsにインストールされているフォントの一覧を得る

System.Drawing.FontFamilyクラスのFamiliesを参照する。参照する前には、あらかじめAdd-TypeコマンドレットでSystem.Drawing名前空間を現在のセッションに追加しておく。 PS > Add-Type -AssemblyName System.Drawing PS > [System.Drawing.FontFamily]::Fa…

【PowerShell】SQL Serverモジュールのインストール

管理者としてPowerShellを起動し、Install-Moduleコマンドレットを以下のように実行する。「インストールしますか?」には「y」を入力してEnterキーを押す。 PS > Get-InstalledModule PS > Get-InstalledScript PS > Install-Module -Name SqlServer -Allow…

【PowerShell】パッケージプロバイダーをインストールする

Get-PackageProviderコマンドレットを使う。以下は、パッケージプロバイダーNuGetをインストールする方法。 まず、現在の環境下で利用可能なパッケージプロバイダーを確認する。PowerShellを管理者として実行して、以下のコマンドを実行する。 PS > Get-Pack…

【PowerShell】インストールされているモジュールを確認する

Get-Moduleコマンドレットを使う。インストールされているモジュールが表形式で表示される。 PS > Get-Module ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Manifest 3.1.0.0 Microsoft.PowerShell.Management {Add-…