2020/07/25 #コマンドの差異#2

皆様おはようございます、

#猫でもできるPowerShell(備忘録)

#コマンドの差異#2

<#

Windows PowerShell および PowerShell 7

それぞれのGet-Command結果を Export-CSV で抽出済み

#>

Write-Host 'それぞれのコマンド数を数える'

$ps7=Import-Csv ~\ps7.csv -Encoding default |select

CommandType,Name,Version,Source

$ps7 |Measure-Object |fl @{L='ps7Count';E={$_.count}} #=1558

$psWin=Import-Csv ~\pswin.csv -Encoding default |select

CommandType,Name,Version,Source

$psWin |Measure-Object |fl @{L='psWinCount';E={$_.count}} #=1597

Write-Host 'PowerShell 7に関する集計'

$ps7 |?{$_.name -notin $pswin.name} |

Measure-Object |fl @{L='ps7Only';E={$_.count}}

$ps7 |?{$_.name -in $pswin.name} |tee -v double_7 | #別の変数に放り込む

Measure-Object |fl @{L='ps7Common';E={$_.count}}

$double_7 |group name |? count -gt 1 | #ogv #2件以上あるものを探すフィルタ

Measure-Object |fl @{L='-ps7Double';E={$_.count}}

Write-Host 'Windows PowerShell に関する集計'

$psWin |?{$_.name -notin $ps7.name} |

Measure-Object |fl @{L='psWinOnly';E={$_.count}}

$psWin |?{$_.name -in $ps7.name} |tee -v double_win | #別の変数に放り込む

Measure-Object |fl @{L='psWinCommon';E={$_.count}}

$double_win |group name |? count -gt 1 | #ogv #2件以上あるものを探すフィルタ

Measure-Object |fl @{L='-pswinDouble';E={$_.count}}

それぞれのコマンド数を数える

ps7Count : 1558

psWinCount : 1597

PowerShell 7に関する集計

ps7Only : 15

ps7Common : 1543

-ps7Double : 54 #1,543 -54 =1,489

Windows PowerShell に関する集計

psWinOnly : 96

psWinCommon : 1501

-pswinDouble : 12 #1,501 -12 =1,489

コマンド数の差異が合わない件について引続き調べてみたところ

どうやら同じコマンド名が(別のSource名で)2件登録されているようでした。

#

「tee -v double_7」や 「tee -v double_win」の部分では

同じ結果をあとで再利用する為いったん別の変数に放り込んでいます。

それぞれ、

「Tee-Object -Variable double_7」

「Tee-Object -Variable double_win」

をはしょった書き方です

#

(グルーピング後)2件以上あるものを探すフィルタ「? count -gt 1」は

「?{$_.Count -gt 1}」

をはしょった書き方です

長くなりましたが謎が解けてスッキリしました

ではまた;