Powershell обрабатывает две переменные на основе одного и того же имени, например соединение SQL

Мои первые переменные примерно такие: name OS version ---- ---- kead windows 2019 hanacockpit SLES12SP3 Мои вторые переменные похожи на

name GB ---- ---- kead 54.081582998856902122497558594 hanacockpit 384.20552698988467454910278320

Как вы можете видеть, первый столбец - это name, если второй имеет то же имя, скажем, kead, присоединиться к GB соответственно.

Окончательный результат - name OS version GB ---- ---- --- kead windows 2019 54.081582998856902122497558594 hanacockpit SLES12SP3 384.20552698988467454910278320

Как бы то ни было, чтобы это сделать?

Фактически, переменная1 и переменная2 взяты из ESXI powercli.

# skip connection.

$all=Get-VM | 
   Get-View -Property @("Name", "config.GuestFullName") | 
   Select -Property Name,
       @{N="OS";E={$_.Config.GuestFullName}}

$space =get-vm | Select Name,@{N="disk-size";E= {@([math]::Round($_.ProvisionedSpaceGB / 1))}}



person newbie    schedule 19.03.2020    source источник
comment
на сайте галереи PowerShell есть как минимум два модуля слияния или объединения, которые, кажется, способны справиться с подобными вещами.   -  person Lee_Dailey    schedule 19.03.2020
comment
$all | Join $space -On Name   -  person iRon    schedule 19.03.2020
comment
Ах, спасибо за сценарий. Пробовал, работает как шарм.   -  person newbie    schedule 20.03.2020


Ответы (1)


Возможно, это не совсем то, о чем вы просите, но вы могли бы просто переписать свою команду в однострочник ...

Пример:

   Get-VM | Select Name, @{N="OS";E={$_.ExtensionData.Config.GuestFullName}}, @{N="disk-size";E= {@([math]::Round($_.ProvisionedSpaceGB / 1))}}

Если вы просто ищете соединение, я обычно предпочитаю Join-Object: https://devblogs.microsoft.com/powershell/join-object/

person Kyle Ruddy    schedule 19.03.2020