【PowerShell】PowerShellプログラミングメモ/MacのローカルマシンでPowerShellを使えるようにする

【PowerShell】PowerShellプログラミングメモ/MacのローカルマシンでPowerShellを使えるようにする

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";
}