#コード
このコードはWindowsにインストールすることができるオプション機能のうち、
SSHクライアント機能とSSHサーバー機能をインストールするものです。
get-WindowsCapability -Online
でインストール可能な機能の一覧を取得します。
その中からSSHだけを選別してインストールします。
powershell
1[Object[]]$input 2$input=get-WindowsCapability -Online | Where-Object -Property Name -Match "^OpenSSH.*" 3[Microsoft.Dism.Commands.BasicCapabilityObject]$serverdata 4$serverdata=$input| Where-Object -Property Name -Match ".*Server.*" 5[Microsoft.Dism.Commands.BasicCapabilityObject]$clientdata 6$clientdata=$input| Where-Object -Property Name -Match ".*Client.*" 7 8if ($server.State -ne 'Installed') { 9 # Install the OpenSSH Server 10 Add-WindowsCapability -Online -Name $serverdata.Name 11} 12if ($client.State -ne 'Installed') { 13 # Install the OpenSSH Client 14 Add-WindowsCapability -Online -Name $clientdata.Name 15}
#やりたいこと
PowerShell7でコードを書いていて、インテリセンスを利かせるために、
以下のように型を明示するようにしました。
powershell
1[Microsoft.Dism.Commands.BasicCapabilityObject]$clientdata
#問題
これを実行してみると、以下のように表示されます。
Current -------
#やったこと
要らないので、以下のように$null
を代入する操作に変えてみたら出力は消えました。
powershell
1[Microsoft.Dism.Commands.BasicCapabilityObject]$clientdata=$null
#質問
Current
とは何のことでしょうか?
------
があることにより、何か続きがありそうな感じもします。
#実行環境
- Powershell 7
- Windows 10 Pro
そのようなプロパティがあるのでしょう。
ご指摘いただいて、改めてウォッチ式を確認してみました。
ここにないということは、何か`Current`という特殊なプロパティがあったりするのでしょうか。
質問に追記しました。
$clientdata に列挙子が入っているのではありませんか?
それならウォッチ式では出なかったと思います。
$clientdata をどのように取得しているか示してください。
$clientdataの取得を行っているコードを載せました。
Where-Object を使っているので多分列挙子ですね。$clientdata[0] を表示するとどうなりますか?
ウォッチ式に$clientdata[0]を追加すると"Microsoft.Dism.Commands.BasicCapabilityObject"と表示されました。
デバッグコンソールに$clientdata[0]を入力すると以下2行が出力されます。
Name : OpenSSH.Client~~~~0.0.1.0
State : Installed
列挙子というのはWikiの列挙型の説明文に出てくる「識別子」のことでしょうか?
https://ja.wikipedia.org/wiki/%E5%88%97%E6%8C%99%E5%9E%8B
間違えました。列挙子ではなく、反復子です。今から回答を作ります。
回答しました。これで解決した場合は解決済みにしてください。
「間違えました」と言いましたが、よく調べたところ、逆にその後の方が間違えていたようです。
C# では列挙体の要素を列挙子と言いますが、
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/language-specification/enums
IEnumerator を実装するオブジェクトのことも列挙子と言います。
https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.ienumerator.movenext?view=netframework-4.8
つまり、同じ言葉を二つの意味で使っているようです。
そして反復子は yield return の含まれたメソッドのことを言うようです。
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/concepts/iterators
混乱してすみませんでした。
回答1件
あなたの回答
tips
プレビュー