- Powershell概要
- Get-Commandでコマンドの使い方を確認する
- powershellから他のプログラムを実行する
- オリジナルのシェル、プロファイル、プロンプトをカスタマイズする。
- 別のカスタマイズ例
- コマンドのヘルプを表示したい。
- コマンドを見つけたい
- コマンドの計測時間を調べる
- (理解できなかったレシピ)シェルをカスタマイズして生産性をあげる
- 以前呼び出したコマンドを実行したい
- コマンドの出力をファイルに格納したい
- 配列、表として出力したい。横幅を調節したい。
Powershell概要
windows power shellとは何か
Powershellのインタラクティブシェル
Get-Commandでコマンドの使い方を確認する
Get-Helpコマンドが解決する課題
powershellから他のプログラムを実行する
具体例
#フルパスを指定するときはシングルクォートで囲み、 & 'C:\Program Files\Program\Program.exe' arguments #スペースを含まない時はシングルkウォーとで囲む必要はない .\Program.exe arguments #シングルクォーとで囲んだ文字列は、&で実行する。 & '.\Program With Spaces.exe' arguments
オリジナルのシェル、プロファイル、プロンプトをカスタマイズする。
notepad $profile
解説:notepadはメモ帳を開くコマンド。引数にファイルパスを指定することでそのファイルを開くことができる。
$profile
はプロファイルスクリプト(カスタム可能なスクリプトでユーザーごとに設定できるもの)のパスが入っているため、
notepad $profileはプロファイルスクリプトをメモ帳で開くことができる。
- カスタマイズ例
function Prompt { "PS [$env:COMPUTERNAME] >" }
解説:Prompt関数は特別な関数である。この関数はpowershellの画面の入力部分をカスタマイズすることができる関数。
本関数ではコンピューター名を表示するようにカスタマイズしている。
ちなみに、$profileを変更した直後はコードがまだ実行されていないので、すぐには適用されない。
$profile
はpowershellを起動した際に実行されるので、再度powershellを起動し直したほうがいい。
別のカスタマイズ例
function Prompt { $id = 1 $historyItem = Get-History -Count 1 if($historyItem) { $id = $historyItem.Id + 1 } Write-Host -ForegroundColor DarkGray "`n[$(Get-Location)]" Write-Host -NoNewLine "PS:$id > " $host.UI.RawUI.WindowTitle = "$(Get-Location)" }
コマンドのヘルプを表示したい。
以下の構文で調べることができる。
Get-Help 調べたいコマンド
コマンドを見つけたい
Get-Command
ところで、コマンドの一部だけ知っているがそれ以外が知らない時は、以下のようにワイルドカード(正規表現)を使うことも可能
Get-Command *コマンドの一部*
コマンドの構成について
Powershellのコマンドの名前には一貫性がある
その一貫性とは 動詞-名詞 の順番でコマンドが構成されているということである。
このメリットによって以下のような芸当が可能である。
1、動詞から検索する。
Get-Command -Verb Get
2、名詞から検索する。
Get-Command -Noun Process
このコマンドによって、例えばGet-Process(タスクマネージャーと同じコマンド)を手に入れられる。
コマンドの計測時間を調べる
Measure-Command
(理解できなかったレシピ)シェルをカスタマイズして生産性をあげる
以下のレシピはまだまだ理解できなかった。要修行。
Push-Location Set-Location HKCU:\Console New-Item '.\%SystemRoot%_system32_WindowsPowerShell_v1.0_powershell.exe' Set-Location '.\%SystemRoot%_system32_WindowsPowerShell_v1.0_powershell.exe' New-ItemProperty . ColorTable00 -type DWORD -value 0x00562401 New-ItemProperty . ColorTable07 -type DWORD -value 0x00f0edee New-ItemProperty . FaceName -type STRING -value "Lucida Console" New-ItemProperty . FontFamily -type DWORD -value 0x00000036 New-ItemProperty . FontSize -type DWORD -value 0x000c0000 New-ItemProperty . FontWeight -type DWORD -value 0x00000190 New-ItemProperty . HistoryNoDup -type DWORD -value 0x00000000 New-ItemProperty . QuickEdit -type DWORD -value 0x00000001 New-ItemProperty . ScreenBufferSize -type DWORD -value 0x0bb80078 New-ItemProperty . WindowSize -type DWORD -value 0x00320078 Pop-Location
以前呼び出したコマンドを実行したい
Get-History #履歴を調べIDを取得 Invoke-History (ID) #IDを記述して呼び起こす
コマンドの出力をファイルに格納したい
//やり方1 Get-ChildItem | Out-File unicodeFile.txt Get-Content filename.cs | Out-File -Encoding ASCII file.txt Get-ChildItem | Out-File-Width 120 unicodeFile.cs //やり方2 Get-ChildItem > files.txt
やり方2 > を使う
実行したいコマンドの右に > を書き、さらにその右にファイル名を書くことで、 ファイルに実行結果を格納することができる。
追記したい場合は >>
を使う。
Get-ChildItem >> files.txt
この方法は簡単ではあるが、出力を綺麗にできない。
Out-File でファイル出力
>
を使った方法と違い、ファイルの出力幅のコントロールが可能。
さらに、文字コードの指定もできる等、幅広い。
Get-ChildItem | Out-File-Width 120 unicodeFile.cs
配列、表として出力したい。横幅を調節したい。
パイプラインを用いて、Format-List、format-Table、Format-Widthへ渡す
$currentError = $error[0] $currentError | Format-List -Force
$error
は履歴で最新のコマンドの実行結果がエラーであった場合の全てを吐き出す。
上記の例ではその一列目を取り出したあと、配列として出力する。
表として出力する
#プロセス一覧 Get-Process #表として出力 Get-Process | Format-Table #Name WSの列のみ出力 Get-Process | Format-Table Name,WS #幅を綺麗にする Get-Process | Format-Table Name,WS -Auto #さらにカスタマイズ $fields = "Name",@{ Label = "WS (MB)"; Expression = {$_.WS / 1mb}; Align = "Right" } Get-Process | Format-Table $fields -Auto
参考:海外版のpowershell pdfファイル
URL:http://index-of.co.uk/Microsoft-Windows-Ebooks/OReilly.Windows.PowerShell.Cookbook.Oct.2007.pdf
title:誰でもわかる!インタラクティブシェル【powershell】
description:powershellクックブックの備忘録です。今回は一章のインタラクティブシェルについてまとめました。
category_script:page_name.startswith("1")
page:https://minegishirei.hatenablog.com/entry/2024/05/21/195649