Вы не можете получить Get-ScheduledTask
в Windows 2008 R2, как это было представлено для Windows 2012, и никто не поддерживал его. Для получения дополнительной информации см. Ссылку на github .
Комментарий, который описывает ситуацию лучше всего:
Hi @dronkoff - этот модуль поддерживается в PS 4.0. Тем не менее
проблема не в версии PowerShell. Проблема в том, что
Модуль ScheduledTasks, от которого зависит этот ресурс, не построен
в Windows Server 2008R2. Впервые он был включен в Windows Server
2012
Это относится ко многим модулям PowerShell: они отсутствуют
из более старых версий Windows (сеть, например). В нечетном
Повод есть легкая работа вокруг. Однако в этом случае преобразование
использование ресурса schtasks.exe невозможно без
полное переписывание и, вероятно, приведет к чему-то действительно
нестабильный и глючный (не говоря уже о проблемах, которые могут возникнуть с
разные локализованные версии счтасков). Я действительно не вижу этого
происходит к сожалению (если кто-то из сообщества не имеет
некоторые идеи о том, как это сделать).
Но вы правы, следует отметить, что Windows Server
2008R2 в настоящее время не поддерживается.
Обходной путь
Способ обойти это - использовать schtask
с правильными переключателями.
Если он у вас в папке Microsoft
, как у меня в примере, вам просто нужно запустить:
schtasks /tn \Microsoft\ServiceNow /query /fo LIST
Выход:
Folder: \Microsoft
HostName: XXXXXACL06
TaskName: \Microsoft\ServiceNow
Next Run Time: 7/4/2018 8:16:22 AM
Status: Ready
Logon Mode: Interactive only
Если вы хотите больше подробностей, вы можете использовать переключатель /v
(подробный):
schtasks /tn \Microsoft\ServiceNow /query /v > service_now_details.txt
Редактировать - найти шаблон
Если у вас есть только шаблон для поиска, вы должны использовать какой-то дополнительный инструмент для поиска строки. Windows изначально поддерживает findstr
(или Select-String
(короткий sls
) в powershell):
Чтобы найти имя задачи, вы можете использовать:
schtasks /query /fo LIST | findstr "ServiceNow"
ИЛИ даже с диким чартером
schtasks /query /fo LIST | findstr "ServiceNo*"
ИЛИ powershell
способ:
schtasks /query /fo LIST | sls 'ServiceNo*'
Вывод во всех случаях будет примерно таким (поскольку моя задача названа точно ServiceNow
):
TaskName: \Microsoft\ServiceNow
Edit2 чувствительность к регистру
Если вы ищете строку без учета регистра, то:
для findstr
необходимо добавить /I
, чтобы сделать его нечувствительным. select-string
(sls) у PowerShell нечувствителен к природе.