【PowerShell】PowerShellプログラミングメモ/MacのローカルマシンでPowerShellを使えるようにする
2024.07.22更新
PowerShellのプログラミングメモの備忘録です。
あわせて、MacのM1チップマシンのローカルにPowerShellの利用環境を構築します。
なお、この記事はプログラミングメモですので、どんどん追記していきます。
ちなみに、プログラミングメモの書き方のコツはこちら。
>> 【PHP】PHPプログラミングメモ/プログラミングメモのコツ
記事の内容
- MacのM1チップマシンのローカルにPowerShellの利用環境を構築する手順
- PowerShellのプログラミングメモ
MacのM1チップマシンのローカルにPowerShellの利用環境を構築する手順
MacのM1チップマシンで環境構築します。
Microsoftの公式ページに手順がありますのでそのまま進めます。
>> 【Microsoft公式ページ】macOS 10.13 以降で Homebrew を使用した最新の安定版リリースのインストール
また、Homebrewを事前にインストールしておけば、brewコマンドでインストール可能です。
>> 【公式】Homebrewのインストール
PowerShell インストールコマンド
# Macのターミナル、またはVSCodeなどのエディタでターミナルを開き、以下を実行していく
# HomebrewでPowerShellをインストール
brew install --cask powershell
# インストールが正常に終了しているかを確認
pwsh
# 新しいバージョンの PowerShell がリリースされたら、Homebrew の式を更新し、PowerShell をアップグレードしてください。
brew update
brew upgrade powershell --cask
# Output
# pwsh と打ち込むとプロンプトがPSに変わったことを確認
# Zshに戻るときはexitと打ち込めばOK
PS /Users/aaa>
PowerShellのプログラミングメモ
ここからは、PowerShellプログラミングメモです。適宜更新していきます。
PowerShell ファイル操作系コマンド一覧
------------------------------------------------------------------------------
PowerShell Linux
------------------------------------------------------------------------------
Get-ChildItem # ls
Get-ChildItem Name # ls -l
Get-ChildItem | Where-Object{$_.Attribute -eq "Directory"} # ls -F | grep /
Get-ChildItem | Where-Object{ $_.PSIsContainer } # ls -F | grep /
Get-ChildItem | Sort-Object LastWriteTime # ls -ltr
Get-ChildItem | Sort-Object LastWriteTime-Decending # ls -lt
Get-Content # cat
Copy-Item # cp
Copy-Item -Recurse # cp -r
Remove-Item # rm
Move-Item # mv
Rename-Item # mv
Get-ChildItem -Recurse -Name # find
(Get-Content "file name" | Measure-Object).Count # wc -l
Get-Location # pwd
New-Item-ItemType. Directory # mkdir
Set-Location # cd
Remove-Item # rmdir
Compare-Object (Get-Content "file name")(Get-Content "file name") # diff
New-Item -ItemType File "file name" # touch
Get-Process # ps
Stop-Process # kill
Select-String -CaseSensitive # grep
Select-String # grep -i
Get-Content "file name" | Sort-Object # sort
Get-Content "file name" | Sort-Object | Get-Unique # sort | uniq
文字列.("置換前文字列","置換後文字列") # tr
Get-Date -Format yyyy/mm/dd # date '+%Y/%m/%d'
Get-Date -Format hh:mm:ss # date '+%T'
[Environment]::OSVersion # uname -a
Get-WMIObject Win32_Processror | Format-List # cat /proc/cpuinfo
Get-WMIObject Win32_PhysicalMemory | Format-List # cat /proc/meminfo
Get-Help # man
hostname # hostname
taskmgr # top
Exit-PSSession # exit
Get-ChildItem env: # env
Get-ChildItem env: # printenv
Write-Host # echo
Clear-Host # clear
Set-Alias # alias
New-Alias # alias
Get-History # history
Get-Random # $RANDOM
Get-Command # which
who -u # who -u
who am i # who am i
ifconfig -a # ifconfig -a
netstat # netstat
arp # arp
ping # ping
traceroute # traceroute
nslookup # nslookup
$NULL # /dev/null
Start-Sleep # sleep
------------------------------------------------------------------------------
PowerShellの比較演算子
# 比較演算子
# PowerShell C/C++ 意味
# ---------------------
-eq == 等しい
-ne != 等しくない
-gt > より大きい
-ge >= 以上
-lt < より小さい
-le <= 以下
-like N/A ワイルドカードと等しい
-notlike N/A ワイルドカードと等しくない
-match N/A 正規表現と等しい
-notmatch N/A 正規表現と等しくない
# 算術演算子
# ---------------------
# PowerShell C/C++ 意味
# ---------------------
+ + 加算
- - 減算/符号反転
* * 乗算
/ / 除算
% % 余剰
[Math]::Pow(x,y) pow(x,y) べき乗(xのy乗)
= = 代入
+= += 加算代入
-= -= 減算代入
*= *= 乗算代入
/= /= 除算代入
%= %= 剰余代入
++ ++ インクリメント
-- -- デクリメント
型・変数・条件分岐
# sample code 1
# 以下の指定された条件に合うように値を代入して宣言する
# int $number: 7
# string $text: test
# boolean $flag: true
# null $test: null
Write-Host "`n----sample code 1-----`n"
# 変数を宣言
$number = 5;
$text = test;
$flag = true;
$test = null;
# 出力
Write-Host $number`n;
Write-Host $text`n;
Write-Host $flag`n;
Write-Host $test`n;
# 型の確認
# 変数の値がNULLなので、GetType() メソッドがエラーとなる。OK。
Write-Host $number.GetType().FullName;
Write-Host $text.GetType().FullName;
Write-Host $flag.GetType().FullName;
Write-Host $test.GetType().FullName;
Write-Host "`n----sample code 2-----`n"
# 整数型の2つの変数を宣言
# 2つの変数を用いて、足す、引く、かける、割る、割ったあまりを出力
$intN1 = 9;
$intN2 = 8;
$intSum = $intN1 + $intN2;
Write-Host ($intN1 + $intN2);
Write-Host ($intN1 - $intN2);
Write-Host ($intN1 * $intN2);
Write-Host ($intN1 / $intN2);
Write-Host ($intN1 % $intN2);
Write-Host "`n----sample code 3,4-----`n"
# 初期値がfalseの変数を宣言
# sample code 2で宣言した2つの変数の和が偶数であればtrueを代入、奇数であればfalseを代入
# 初期値がfalseのフラグ:flagを宣言
$flag = false;
# 宣言した2つの変数の和を定義
$intSum = $intN1 + $intN2
if(($intSum) % 2 -eq 0){
$flag = true;
else{
$flag = false;
}
}
# 初期値がfalseの変数を宣言
# sample code 2で宣言した2つの変数の和が偶数であればtrueを代入、奇数であればfalseを代入
if($flag -eq $true){
Write-Host "even number";
}else{
Write-Host "odd number";
}