Могу ли я переупорядочить массив так, как я хочу (переключать номера индексов без сортировки)? - PullRequest
0 голосов
/ 04 июля 2019

Я хочу сделать список выбора, чтобы выбрать установленный принтер. Но принтер по умолчанию должен быть в верхней части этого списка. Как я могу переключиться, скажем, индекс 5 массива с индексом 0?

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

Это уже рабочий код:

$Printers = Get-Printer
$DefaultPrinter = Get-WmiObject -Query " SELECT * FROM Win32_Printer WHERE Default=$true" | Select -Expand Name
$PrinterSelection = $Printers.Name

$PrinterSelection вывод: (принтер Brother используется по умолчанию)

Verzenden naar OneNote 16
OneNote
Microsoft XPS Document Writer
Microsoft Печать в PDF
Факс
Принтер Brother DCP-J4120DW
Adobe PDF

$FirstPrinter = $PrinterSelection[0]
$DefaultPrinterNumber = [array]::indexof($PrinterSelection,$DefaultPrinter)
$PrinterSelection[0] = $DefaultPrinter
$PrinterSelection[$DefaultPrinterNumber] = $FirstPrinter

$PrinterSelection вывод:

Brother DCP-J4120DW Принтер
OneNote
Microsoft XPS Document Writer
Microsoft Печать в PDF
Факс
Verzenden naar OneNote 16
Adobe PDF

Проблема решена, но есть ли более чистый путь?
Обычными шагами:
Вырезать $PrinterSelection[$DefaultPrinterNumber] Вставить $PrinterSelection[0] (не перезаписать)

Ответы [ 2 ]

3 голосов
/ 04 июля 2019

Для этого можно использовать методы Remove() и Insert() общего списка.Общие списки изменчивы.В этом случае я печатаю элементы списка в виде строк.

$printerselection = $printers.name -as 'System.Collections.Generic.List[String]'
$printerselection.Remove($Defaultprinter)
$printerselection.Insert(0,$Defaultprinter)

Оператор -as изменит тип вашего вывода $printers.name из массива на System.Collections.Generic.List`1 [System.String] предоставление изменчивости и доступа к методам.

0 голосов
/ 04 июля 2019

Вы можете поменять местами 0 и 5 следующим образом:

$a[0],$a[5] = $a[5],$a[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...