はじめに
普段よく使うものや便利だなあと思ったPowerShellコマンドを紹介します。
他にも出てきたら随時更新していきます。
コマンド
ファイルハッシュ値の取得(Get-FileHash)
ファイルのハッシュ値を取得します。
コピー前とコピー後でファイルが壊れていないことを確認したいときに使います。
パイプでFormat-Listに渡してあげると視認性が上がります。
PS> Get-FileHash C:\work\test.txt | Format-List
Algorithm : SHA256
Hash : 328FFFEEF36BA249A0C194C21BB3B366D9EA38A801B9556F0C0E6D225E001F18
Path : C:\work\test.txt
ポート疎通確認(Test-NetConndction)
指定したポートへの疎通確認をします。
サーバなどにアクセスできなかった際に実行しています。
TcpTestSucceededがTrueであれば疎通okです。
PS> Test-NetConnection google.com -Port 443
ComputerName : google.com
RemoteAddress : 172.217.175.46
RemotePort : 443
InterfaceAlias : Wi-Fi
SourceAddress : 192.168.0.100
TcpTestSucceeded : True
名前解決の確認(Resolve-DnsName)
名前解決の確認で使用します。
nslookupコマンドでも名前確認はできるのですが、hostsファイルを参照しなかったりプライマリDNSサーバでしか検証をしなかったりするので、最近はこちらを使用しています。
PS> Resolve-DnsName www.google.com
Name Type TTL Section IPAddress
---- ---- --- ------- ---------
www.google.com AAAA 30 Answer 2404:6800:4004:80c::2004
www.google.com A 207 Answer 142.251.42.196
PowerShellの実行ログ取得(Start-Transcript)
PowerShellコマンド実行時のログを保存します。
ソフトウェアのインストール作業などをPowerShellで実施する際などに利用します。
-IncludeInvocationHeader オプションを付与することでコマンドごとに実行時間が付与されます
注意点として、現状DOSコマンドは正常に記録がされないようですので、PowerShellのコマンドで完結できるのであれば、DOSコマンドは使用しない方が安全です。
PS> Start-Transcript -IncludeInvocationHeader
トランスクリプトが開始されました。出力ファイル: C:\Users\test\Documents\PowerShell_transcript.hostname.8mO5jJej.20261205141817.txt
PS> Test-Connection localhost
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
hostname localhost 127.0.0.1 ::1 32 0
hostname localhost 127.0.0.1 ::1 32 0
hostname localhost 127.0.0.1 ::1 32 0
hostname localhost 127.0.0.1 ::1 32 0
PS> Stop-Transcript
トランスクリプトが停止されました。出力ファイル: C:\Users\test\Documents\PowerShell_transcript.hostname.8mO5jJej.20251206141817.txt
環境変数の一覧表示(Get-ChildItem env:)
環境変数の一覧を表示します。
使用する場面は多くないですが、たまに便利です。
PS C:\Users\tatsu> Get-ChildItem env:
Name Value
---- -----
ALLUSERSPROFILE C:\ProgramData
APPDATA C:\Users\test\AppData\Roaming
CommonProgramFiles C:\Program Files\Common Files
CommonProgramFiles(x86) C:\Program Files (x86)\Common Files
CommonProgramW6432 C:\Program Files\Common Files
COMPUTERNAME hostname
ComSpec C:\WINDOWS\system32\cmd.exe
DriverData C:\Windows\System32\Drivers\DriverData
HOMEDRIVE C:
HOMEPATH \Users\test
Get-Member
オブジェクトが持っているプロパティやメソッドを確認できます。
スクリプト作成の時や表示する情報を絞りたい際などに便利です。
PS> Get-Service | Get-Member
TypeName: System.ServiceProcess.ServiceController
Name MemberType Definition
---- ---------- ----------
Name AliasProperty Name = ServiceName
RequiredServices AliasProperty RequiredServices = ServicesDependedOn
Disposed Event System.EventHandler Disposed(System.Object, System...
Close Method void Close()
Continue Method void Continue()
CreateObjRef Method System.Runtime.Remoting.ObjRef CreateObjRef(type r...
Dispose Method void Dispose(), void IDisposable.Dispose()
Equals Method bool Equals(System.Object obj)
ExecuteCommand Method void ExecuteCommand(int command)
GetHashCode Method int GetHashCode()
GetLifetimeService Method System.Object GetLifetimeService()
GetType Method type GetType()
InitializeLifetimeService Method System.Object InitializeLifetimeService()
Pause Method void Pause()
Refresh Method void Refresh()
Start Method void Start(), void Start(string[] args)
Stop Method void Stop()
WaitForStatus Method void WaitForStatus(System.ServiceProcess.ServiceCo...
CanPauseAndContinue Property bool CanPauseAndContinue {get;}
CanShutdown Property bool CanShutdown {get;}
CanStop Property bool CanStop {get;}
Container Property System.ComponentModel.IContainer Container {get;}
DependentServices Property System.ServiceProcess.ServiceController[] Dependen...
DisplayName Property string DisplayName {get;set;}
MachineName Property string MachineName {get;set;}
ServiceHandle Property System.Runtime.InteropServices.SafeHandle ServiceH...
ServiceName Property string ServiceName {get;set;}
ServicesDependedOn Property System.ServiceProcess.ServiceController[] Services...
ServiceType Property System.ServiceProcess.ServiceType ServiceType {get;}
Site Property System.ComponentModel.ISite Site {get;set;}
StartType Property System.ServiceProcess.ServiceStartMode StartType {...
Status Property System.ServiceProcess.ServiceControllerStatus Stat...
ToString ScriptMethod System.Object ToString();
# 上記で確認したプロパティを使用
PS> (Get-Service -Name "wuauserv").ServicesDependedOn
Status Name DisplayName
------ ---- -----------
Running rpcss Remote Procedure Call (RPC)
データ型の確認(GetType())
GetType()メソッドを使用することで、データ型の確認を行うことができます。
こちらもスクリプト作成時に便利です。
PS > ((Resolve-DnsName google.com).IP4Address).GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
最後に
今回はよく使用するPowerShellコマンドを紹介しました。
もしおすすめコマンドがあればコメントいただけると幸いです。