Size: a a a

Инсайдеры Windows 10

2021 April 09

D

D.S.Denton in Инсайдеры Windows 10
А что, у вас уже чипируют ими? У нас никак не пойдет в массы, росздравнадзор с выдачей регистрашки тянет
источник

VS

Vadim Sterkin in Инсайдеры Windows 10
▶️ PowerShell vs CMD: выборка по неполному значению

В предыдущем эпизоде была работа с датами. А на этот раз в форуме скриптов один участник создал две схожие темы в категории CMD/BAT.

1. Как отключить задание в планировщике, если часть названия варьируется. В качестве примера он привел:
Yandex.Stroka.User.S-1-5-21-3347023001-...

2. Как удалить из реестра параметр, у которого часть имени варьируется. Например, случайный набор символов в:
GoogleChromeAutoLaunch_1405EDE48...

👉 Обе задачи легко решаются ванлайнерами #PowerShell.

1. Участник честно попытался решить на CMD с помощью подстановочного символа *, но это не прокатило:
schtasks /Change /TN "\Yandex.Stroka*" /Disable

А на PowerShell такая логика сработает:
Get-ScheduledTask -TaskName '*yandex.stroka*' | Disable-ScheduledTask

2. С REG DELETE у товарища не получилось. В PowerShell другой командлет, но тот же принцип:
$mypath = "HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
Remove-ItemProperty -Path $mypath -Name 'GoogleChromeAutoLaunch*'

Здесь я сделал две строки из одной ради более приличного вида в Telegram.

Участник, однако, все равно возжелал CMD, потому что "они как-то привычнее". Стандартный подход:
powershell -ex bypass -noprofile -command "команда"
powershell -ex bypass -noprofile -file "путь к ps1"


Конечно, обе задачи можно решить и на CMD, если вы владеете FOR (и любите писать больше строк нежели меньше). Но PowerShell здесь значительно проще и даже логичнее.  

Да, к работе с реестром в PowerShell надо привыкнуть, но это частный случай. А выборка по неполному значению с помощью * - общий. И этот прием вы будете часто применять в разнообразных задачах. ✌️
источник

VG

Vasily Gusev in Инсайдеры Windows 10
Ну... Wildcard не все аргументы и командлеты поддерживают. Но да, большинство.
источник

PP

Piter Pen in Инсайдеры Windows 10
Отписался в отдельном чате, дабы не испытывать терпение администрации.
источник

VS

Vadim Sterkin in Инсайдеры Windows 10
Я вроде и не заявлял, что все командлеты поддерживают. Я вообще избегаю глобальных утверждений, это путь к бесславию :)
источник

VG

Vasily Gusev in Инсайдеры Windows 10
Ну... Мутно было. Можно было подумать что заявлял 🙄
источник

Z

Zubastic in Инсайдеры Windows 10
Пошик рулит
источник

VS

Vadim Sterkin in Инсайдеры Windows 10
Ну... когда не сработает, доставишь... в чате пошика :)
источник

VS

Vadim Sterkin in Инсайдеры Windows 10
я вот только сейчас подумал, что один из примеров надо было сделать
Get-ScheduledTask |  ? TaskName -like '*yandex*'
источник

VS

Vadim Sterkin in Инсайдеры Windows 10
так больше шансов?
источник

VG

Vasily Gusev in Инсайдеры Windows 10
ну... правильно что не сделал ;)
Шансов больше, более того - так будет работать с любыми данными.
Проблема в том что так сначала получаются ВСЕ данные, а потом уже отбираются нужные. (Для cmd это похер конечно, там не до производительности :D) В случае с запланированными задачками... ну норм. А в случае с большим AD например или еще каким медленным источником... - не очень :)
источник

VS

Vadim Sterkin in Инсайдеры Windows 10
ну так если не работает в самом командлете, то что кроме where использовать?
источник

EK

Evgeny Khitrinevich in Инсайдеры Windows 10
Иногда в командлетах могут быть собственные фильтры, просто они могут работать не так очевидно
источник

VG

Vasily Gusev in Инсайдеры Windows 10
ну не, where и использовать _в таком случае_.
источник

VG

Vasily Gusev in Инсайдеры Windows 10
👍
источник

VS

Vadim Sterkin in Инсайдеры Windows 10
ок, обновил пост в канале
источник

VS

Vadim Sterkin in Инсайдеры Windows 10
наверное это тема для отдельного поста, ну и если это исключение, то для моей аудитории это не столь важно
источник

VG

Vasily Gusev in Инсайдеры Windows 10
ну... это скорее правило - если у командлета есть собственная функциональность для фильтрации и производительность важна - лучше использовать эту функциональность.
источник

VG

Vasily Gusev in Инсайдеры Windows 10
а то...
get-aduser -filter * -properties * | where {$_.name -like "*ivanov*"} | select name, mail
источник

EK

Evgeny Khitrinevich in Инсайдеры Windows 10
блен, хотел привести в пример get-adgroup, а ms поломала документацию
источник