Windows 11 PowerShell バージョンアップ | 確認

PowerShell 7 $PSVersionTable.PSVersion

Windows 11 で入っていた PowerShellのバージョンを確認する

$PSVersionTable.PSVersion
PowerShell バージョン確認

初期にインストールされている PowerShellバージョンは 5.1でした。

PowerShell の最新版をインストールする

https://github.com/PowerShell/PowerShell

↑上のURLに インストーラーファイル(msi)が ダウンロードできる

PowerShell 7 にアップデート

バージョン5と7は 別々で動くようです。

PowerShellの実行ファイルが macOS版と共通になって pwshでPowerShell 7が起動します。

PowerShell 7は pwshで起動できる

PowerShell 〇時〇分まで whileループ

PowerShell 〇時〇分まで whileループ

下記コードは、 PowerShell を使ったシンプルなループ例です。

while ($true)
    Get-Date
    Start-Sleep -Seconds(1) #1秒スリープ
}

このコードは、 現在時刻を出して 1秒間スリープを永遠繰り返します。このコードを少し変更して○時○分までwhileループし 超えれば終了するようにします。

$terminateDate = (Get-Date).AddSeconds(60) #今から60秒後
Write-Host ([String]::Format("終了時刻 = {0}",$terminateDate))
while ((Get-Date) -lt $terminateDate){ 
    Get-Date
    Start-Sleep -Seconds(1) #1秒スリープ
}

上↑のコードは、 現在日時が 変数 $terminateDate を超えたら whileループから抜けます。

C# dotnet 6.0 変数の型でswitchしたい場合

C# dotnet 6.0 変数の型でswitchしたい場合

C# dotnet 6.0 変数の型(type)で switchしたい場合のコード例です。

下記 2つの クラスをswitchで判断したい とします。

class A {}
class B {}

List<object>に 上記2つのA, Bクラス インスタンスを入れます。

var objList = new List<object> {
    new A(), new B()
};

1つのswitchで、型が2つ型変数の入ったリスト内の型を判断する

foreach(var obj in objList)
{
    switch (obj){
        case A aValue:
            Console.WriteLine("This type is {0}.",aValue.GetType().ToString());
            break;
        case B bValue:
            Console.WriteLine("This type is {0}.",bValue.GetType().ToString());
            break;
    }
}
C# それぞれの型でswitchできています
結果 型でswitchできています

上記の場合、 変数が switch(値)ですが switch(type) の コード例です。

var objList = new List<Type> {
    (new A()).GetType(), (new B()).GetType()
};
foreach(var obj in objList)
{
    switch (obj){
        case Type aValue when aValue == typeof(A):
            Console.WriteLine("This type is {0}.",aValue.ToString());
            break;
        case Type bValue when bValue == typeof(B):
            Console.WriteLine("This type is {0}.",bValue.ToString());
            break;
    }
}