Командлет Powershell отменяет -switch (все, кроме параметра switch) - PullRequest
0 голосов
/ 18 мая 2018

Как получить все элементы, кроме того, который обозначен переключателем?

Я использую:

Get-Disk -UniqueId 4875E7EB064AA60

, чтобы получить информацию только о конкретном диске.

Я хочу использовать ту же команду, но получить все диски, кроме этого.

Примерно так (в псевдокоде):

Get-Disk -not( -UniqueId 4875E7EB064AA60 )

1 Ответ

0 голосов
/ 19 мая 2018

PowerShell как язык не позволяет «инвертировать» значение параметра.Вам нужно отфильтровать возвращенные результаты с помощью Where-Object после факта.

Get-Disk | Where-Object { $_.UniqueId -ne '4875E7EB064AA60' }

Существует несколько командлетов, которые позволяют выражать семантику «все, кроме этой», но это зависит от индивидуального командлета, если и как ониреализовать это.Например:

  • Командлеты Get-ChildItem и Select-Object имеют параметр -Exclude, позволяющий исключить определенные результаты.
  • Командлет Select-String имеет переключатель -NotMatch инвертировать то, что выбрано параметром -Pattern.
  • Все командлеты с параметрами фильтра, которые позволяют выражать условие not (например, Get-WmiObject -Filter, Get-ADUser -Filter или Get-ADUser -LDAPFilter), очевидно, также позволяютвыражая «не это» семантику.
...