#powershell
#powershell
Вопрос:
Я пытаюсь создать сценарий Powershell, который использует командлет Invoke-Item, как только я найду файлы, используя следующий сценарий:
gci -Recurse -File *.xls* C:folder_example' | sort LastWriteTime | Select -last 2 |
Я не уверен, как лучше всего реализовать командлет Invoke-Item отсюда?
Комментарии:
1. Вы просто добавляете его в конец, что вы имеете в виду?
gci -Recurse -File .xls C:folder_example' | sort LastWriteTime | Select -last 2 | Invoke-Item
Ответ №1:
В простейшем случае Invoke-Item
(псевдоним as ii
) просто нуждается в пути, заданном ему либо через конвейер, либо через параметр.
В этом случае это может быть так же просто, как добавление | Invoke-Item
в конец вашей команды:
gci -Recurse -File *.xls* C:folder_example | sort LastWriteTime | select -Last 2 | Invoke-Item
Одна вещь, о которой я упомяну, это то, что я обнаружил, что некоторые программы не могут обрабатывать кучу файлов, передаваемых им в быстрой последовательности, как это будет делать этот скрипт.
Обычно я сталкиваюсь с этим, когда пытаюсь открыть кучу файлов в Notepad .
Я собираюсь немного упростить команду, просто чтобы она была короткой … но обычно одно из этих двух изменений решает мою проблему:
Get-ChildItem -Filter *.xls* | ForEach-Object { Invoke-Item $_.FullName }
Иногда это можно исправить, поместив вызов в ForEach-Object
блок сценария. Я не уверен на 100%, почему это все исправляет, у меня есть несколько теорий, но это все, чем они являются, поэтому я не буду упоминать их в этом ответе. Но это всегда устраняет проблему для меня при использовании Invoke-Item
файлов Notepad .
Некоторые программы, такие как Excel, имеют заставку при запуске и некоторую задержку перед окончательным открытием. Таким образом, вы всегда можете добавить туда сон, просто чтобы немного замедлить процесс на случай, если у вас все еще возникают проблемы:
Get-ChildItem -Filter *.xls* | ForEach-Object { Start-Sleep 0.1; Invoke-Item $_.FullName }
Это добавит небольшую паузу в 100 мс только для того, чтобы дать любому приложению, которое вы запускаете, немного времени для обработки.
Комментарии:
1. Чад, это было большим подспорьем для двух других сценариев, над которыми я работал, спасибо!!!
2. @MattGilbert Потрясающе! Если вы считаете, что это ответ на ваш вопрос, пожалуйста, обязательно отметьте его как ответ 👍