Переконайтеся, що підстановка охоплює заданий шлях у PowerShell


1

Я намагаюся зрозуміти, як перевірити в PowerShell, якщо для заданого шляху буде запущено шаблон підстановки в командному рядку. Щоб було зрозуміло, у мене є щось на зразок цього:

For ($exception in $Exceptions) {
    For ($path in $ListOfAllItems) {
        If (IsPartOfPath -Wildcard $exception -Path $path) {
            -- do something....
        }
    }
}

Проблема, яку я маю, це як це реалізувати IsPartOfPath функції. Я пробував простий $path -imatch $wildcard але не сподобався результат, оскільки він потрапляє в повний синтаксис RegEx. Чи є химерний спосіб в PS зробити це, крім написання всіх шаблонів перевірки самостійно?

Ідея вирішити її я мав отримати шлях до ресурсів $path посилається і перевіряти, якщо $exception відноситься до одного ресурсу. Однак я не знаю, чи можливо це в PowerShell: /

Відповіді:


0

The -like Оператор, ймовірно, є тим, чого ви шукаєте. Це не робить жодного порівняння регулярних виразів, і він працює * і ? саме так, як ви очікуєте. Це нечутливо.

На жаль, він має кілька додаткових функцій: # відповідає номерам і квадратним дужкам, подібним до [abc] відповідати будь-якому з символів у дужках. Схоже, що всі вони мають таку ж семантику, як Get-ChildItem фільтра і VB.NET Like оператора.

Якщо це проблематично, перед використанням можна уникнути небажаних символів підстановки -like:

$path -like ($wildcard.Replace('[', '[[]').Replace('#', '[#]'))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.