0

意図したとおりに機能するこの既存の PS スニペットがあります。

$creds = New-Object -TypeName System.Management.Automation.PSCredential ("USERID", (new-object System.Security.SecureString));
$FullVM | Where-Object {$_.runtime.powerState -eq "PoweredOn"} | 
    Select-Object -Property Name,@{N="GuestId";E={$_.Guest.GuestId}},
      @{N="Installed Guest OS";E={$_.Guest.GuestFullName}},
      @{N="Configured Guest OS";E={$_.Config.GuestFullName}},
      @{N="ACCESS";E={$CurrentSession=New-SSHSession -ComputerName $_.Name -AcceptKey -keyfile C:\temp\key.txt -Credential $creds ;(Invoke-SSHCommand -SSHSession $CurrentSession -Command "echo YES" -OutVariable result).output}} 

基本的に、私が理解していることから、データを収集し、それらを変数「またはオブジェクト?」に保存します。

最後の行では、リモート マシン ($_.Name で定義) への SSH 接続を試行し、成功した場合は "YES" を返し、"オブジェクト" の "ACCESS" に保存されます。

@{N="ACCESS";E={$CurrentSession=New-SSHSession -ComputerName $_.Name -AcceptKey Credential $creds ;(Invoke-SSHCommand -SSHSession $CurrentSession -Command "echo YES" -OutVariable result).output}}

私が今直面している問題は、同じ行をこれに挿入/添付/書き換える方法を見つけようとしていることです:

  foreach ($vmguest in $FullVM) {
       $vmguest.Config.Hardware.Device | Where-Object {$vmguest.Guest.GuestFullName -cnotlike "*Microsoft*" -and  $_.GetType().Name -match $unwantedHardware} | Foreach-Object {
          New-Object -TypeName PSObject -Property @{
             Name = $vmguest.name
             Label = $_.DeviceInfo.Label
             OS = $vmguest.Guest.GuestFullName
          }
       }
    }

これを書き直して、前のスニペットと同じ機能を提供するにはどうすればよいですか? このように書くのですか?

foreach ($vmguest in $FullVM) {
       $vmguest.Config.Hardware.Device | Where-Object {$vmguest.Guest.GuestFullName -cnotlike "*Microsoft*" -and  $_.GetType().Name -match $unwantedHardware} | Foreach-Object {
          New-Object -TypeName PSObject -Property @{
             Name = $vmguest.name
             Label = $_.DeviceInfo.Label
             OS = $vmguest.Guest.GuestFullName
             @{N="ACCESS";E={$CurrentSession=New-SSHSession -ComputerName $_.Name -AcceptKey Credential $creds ;(Invoke-SSHCommand -SSHSession $CurrentSession -Command "echo YES" -OutVariable result).output}}
          }
       }
    }

これを達成する方法を教えてください。事前にどうもありがとうございました!

4

0 に答える 0