Вы можете использовать COM для вызова глагола для нескольких файлов за одну операцию.
Предполагая ...
$folderPath = 'X:\Test'
$verbName = 'print'
$verbArguments = ''
... вы можете распечатать все объекты в папке с помощью...
$application = New-Object -ComObject 'Shell.Application'
$folder = $application.NameSpace($folderPath)
$folderItems = $folder.Items()
Write-Verbose "Folder ""$($folder.Self.Name)"" contains $($folderItems.Count) item(s)."
$folderItems.InvokeVerbEx($verbName, $verbArguments)
Я говорю "объекты", потому что $folderItems
будет содержать как файлы, так и папки.По умолчанию это перечисление подпапок и игнорирование скрытых объектов, тогда как глаголы игнорируются для объектов, которые их не поддерживают.
Если, например, вы хотите печатать только файлы с определенным расширением, которые являются непосредственными дочерними элементамии включать скрытые файлы, вы можете сделать это, используя метод Filter()
...
New-Variable -Name 'SHCONTF_NONFOLDERS' -Option 'Constant' -Value 0x00040
New-Variable -Name 'SHCONTF_INCLUDEHIDDEN' -Option 'Constant' -Value 0x00080
$application = New-Object -ComObject 'Shell.Application'
$folder = $application.NameSpace($folderPath)
$folderItems = $folder.Items()
$folderItems.Filter($SHCONTF_NONFOLDERS -bor $SHCONTF_INCLUDEHIDDEN, '*.jpg')
Write-Verbose "Filtered folder ""$($folder.Self.Name)"" contains $($folderItems.Count) item(s)."
$folderItems.InvokeVerbEx($verbName, $verbArguments)
Если вы хотите напечатать какой-то пользовательский набор файлов, которые не выровнены по расширению, видимости и т. д.тогда я не вижу способа сделать это.Это может потребовать изменения $folderItems
или создания нового экземпляра FolderItems3
, и ни один из них не представляется возможным.Я вижу, что есть ShellFolderView
тип , который поддерживает выбор элемента , но похоже, что он предназначен для взаимодействия с окном, похожим на Проводник.
Документация для типов и констант, использованных выше: