Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 23.01.2020
Сообщений: 9
1

Как можно перечислить несколько параметров Where {$_.DisplayName -notlike "**"}

23.01.2020, 15:01. Показов 2690. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
PowerShell
1
2
3
4
Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\*","HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*","HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" | 
Select DisplayName | Sort DisplayName | 
Where {$_.DisplayName -ne $null -and $_.DisplayName -notlike "*Microsoft*" -and $_.DisplayName -notlike "*MPC-BE*" -and $_.DisplayName -notlike "*Google*" -and $_.DisplayName -notlike "*Skype*" -and $_.DisplayName -notlike "*Kaspersky*" -and $_.DisplayName -notlike "*7-Zip*" -and $_.DisplayName -notlike "*Java*" -and $_.DisplayName -notlike "*Far*"} | 
Format-Table -AutoSize
Имеется такой код. Хочется не писать всю эту колбасу в фигурных скобках, а где-то всё перечислить и потом подставить. Подскажите, пожалуйста, как это сделать? И ещё важно сохранить параметр (-ne $null), чтобы пустые строчки не отображались.
Заранее большое спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2020, 15:01
Ответы с готовыми решениями:

Есть функция, в прототипе которой несколько параметров перечислены через запятую. Можно ли в теле функции обработать их, как массив?
Например, double max(double x1, double x2, double x3, double x4) { int m; int i; double *a;...

Перечислить несколько методов класса Integer
Перечислить несколько методов класса Integer, которые генерируют исключения. Описать ситуации,...

Перечислить в 1 столбце несколько значений из других таблиц
2 таблицы: - game; Столбцы: idgame firstteam secondteam - chempionship. Столбцы:

Как передать несколько параметров с формы?
Здравствуйте. Столкнулся со следующей проблемой. На странице выведены несколько div-ов с...

12
1362 / 514 / 145
Регистрация: 20.02.2019
Сообщений: 2,571
Записей в блоге: 42
23.01.2020, 15:33 2
вот такой вариант пришел на ум.

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function test{
    param (
        [string]$DisplayName,
        [string[]]$stringArray = @("*Microsoft*", "*MPC-BE*", "*Google*", "*Skype*", "*Kaspersky*","*7-Zip*", "*Java*", "*Far*")
    )
    if ($DisplayName -eq $null) {return $false}
    $stringArray | ForEach-Object {
            if ($DisplayName -like $_) {return $false}
        }
    return $true
}
 
$gipInputArray = @("HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\*","HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*","HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*")
 
Get-ItemProperty $gipInputArray | 
    Select DisplayName |
        Sort DisplayName | 
            Where {test $_} | 
Format-Table -AutoSize
Добавлено через 12 минут
Стоп наврал, не пойму где

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function test{
    param (
        [string]$DisplayName,
        [string[]]$stringArray = @("*Microsoft*", "*MPC-BE*", "*Google*", "*Skype*", "*Kaspersky*","*7-Zip*", "*Java*", "*Far*")
    )
    if ($DisplayName -eq $null) {return $false}
    $stringArray | ForEach-Object {
            if ($DisplayName -like $_) {return $false}
        }
    return $true
}
 
test 'asdfs Microsoft asdfasdf'
 
False
True
0
0 / 0 / 0
Регистрация: 23.01.2020
Сообщений: 9
23.01.2020, 15:34  [ТС] 3
alhaos, К сожалению похоже где-то ошибка. Пустые не исключает, перечисленные приложения не исключает.
0
1362 / 514 / 145
Регистрация: 20.02.2019
Сообщений: 2,571
Записей в блоге: 42
23.01.2020, 15:37 4
так работает
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function test{
    param (
        [string]$DisplayName,
        [string[]]$stringArray = @("*Microsoft*", "*MPC-BE*", "*Google*", "*Skype*", "*Kaspersky*","*7-Zip*", "*Java*", "*Far*")
    )
    if ($DisplayName -eq $null) {return $false}
    ForEach($el in $stringArray)
    {
        if ($DisplayName -like $el) {return $false}
    }
    return $true
}
 
$gipInputArray = @("HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\*","HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*","HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*")
 
Get-ItemProperty $gipInputArray | 
    Select DisplayName |
        Sort DisplayName | 
            Where {test $_} | 
Format-Table -AutoSize
0
0 / 0 / 0
Регистрация: 23.01.2020
Сообщений: 9
23.01.2020, 15:43  [ТС] 5
Огонь! Спасибо большое!
Правда, возможно я не правильно объяснил, но -eq $null не обрабатывает пустоту.
Миниатюры
Как можно перечислить несколько параметров Where {$_.DisplayName -notlike "**"}  
0
1362 / 514 / 145
Регистрация: 20.02.2019
Сообщений: 2,571
Записей в блоге: 42
23.01.2020, 15:44 6
Лучший ответ Сообщение было отмечено BlackRouZ как решение

Решение

А вот так даже пустые убирает )))))))))))))))
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function test{
    param (
        [string]$DisplayName,
        [string[]]$stringArray = @("*Microsoft*", "*MPC-BE*", "*Google*", "*Skype*", "*Kaspersky*","*7-Zip*", "*Java*", "*Far*")
    )
    if ($DisplayName -match '^\s*$') {return $false}
    ForEach($el in $stringArray)
    {
        if ($DisplayName -like $el) {return $false}
    }
    return $true
}
 
$gipInputArray = @("HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\*","HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*","HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*")
 
Get-ItemProperty $gipInputArray | 
    Select DisplayName |
        Sort DisplayName | 
            Where {test $_.DisplayName} | 
                Format-Table -AutoSize
1
0 / 0 / 0
Регистрация: 23.01.2020
Сообщений: 9
23.01.2020, 15:47  [ТС] 7
Супер! Шикарно! Спасибо огромное! Вы меня спасли)
0
1362 / 514 / 145
Регистрация: 20.02.2019
Сообщений: 2,571
Записей в блоге: 42
23.01.2020, 15:55 8
Цитата Сообщение от BlackRouZ Посмотреть сообщение
Супер! Шикарно! Спасибо огромное! Вы меня спасли)
так то на здоровье, но я бы еще подождал думаю будут поинтереснее решения

Добавлено через 2 минуты
Цитата Сообщение от alhaos Посмотреть сообщение
$stringArray | ForEach-Object {
            if ($DisplayName -like $_) {return $false}
        }
кстати объясните кто нибудь, вот тут почему в первом моем решении ретурн ведет себя не так как я хотел?
0
6243 / 2118 / 334
Регистрация: 10.12.2013
Сообщений: 7,297
23.01.2020, 16:55 9
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\*",
                 "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*",
                 "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" | 
 
    Select DisplayName |
    
        Where { 
                 $_.DisplayName -ne $null
                 -and $_.DisplayName -notlike "*Microsoft*"
                 -and $_.DisplayName -notlike "*MPC-BE*"
                 -and $_.DisplayName -notlike "*Google*"
                 -and $_.DisplayName -notlike "*Skype*"
                 -and $_.DisplayName -notlike "*Kaspersky*"
                 -and $_.DisplayName -notlike "*7-Zip*"
                 -and $_.DisplayName -notlike "*Java*"
                 -and $_.DisplayName -notlike "*Far*"
 
              }  | Sort DisplayName  | Format-Table -AutoSize
Добавлено через 1 минуту
PS: интуитивно. не проверял.
0
0 / 0 / 0
Регистрация: 23.01.2020
Сообщений: 9
23.01.2020, 17:40  [ТС] 10
volodin661, К сожалению так не сработает) я пробовал. Это сработает, только если "-and $_.DisplayName -notlike" будут перечислены в строчку.
0
6243 / 2118 / 334
Регистрация: 10.12.2013
Сообщений: 7,297
23.01.2020, 19:03 11
BlackRouZ,

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$bad_boys = @(
   "Microsoft",
   "MPC-BE",
   "Google",
   "Skype",
   "Kaspersky",
   "7-Zip",
   "Java",
   "Far"
)
 
$items = Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\*",
                          "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*",
                          "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"|
         select DisplayName 
 
$items.where{ sls -Input $_ -notmatch $bad_boys } | sort-object | ft -AutoSize
1
0 / 0 / 0
Регистрация: 23.01.2020
Сообщений: 9
24.01.2020, 08:16  [ТС] 12
Вот так работает) спасибо!
Только в выводе почему-то странные пробелы между софтом.
Кстати, я ошибочно разместил ключ
PowerShell
1
HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\*
Его нужно заменить на

PowerShell
1
HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*
Миниатюры
Как можно перечислить несколько параметров Where {$_.DisplayName -notlike "**"}  
0
0 / 0 / 0
Регистрация: 23.01.2020
Сообщений: 9
24.01.2020, 08:47  [ТС] 13
С пустыми полями суть понял. Некоторые приложения не имеют этих полей. Таких как дисплей нейм. Так что всё верно)
0
24.01.2020, 08:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2020, 08:47
Помогаю со студенческими работами здесь

Как вложить несколько параметров в callback
Помогите пожалуйста, как сделать чтобы callback считал любую функцию в независимости от того...

Как передать несколько параметров в поток?
не актуально

Как передать несколько параметров в функцию
Как передать несколько параметров в функцию? пытаюсь передать переменную s она объявлена глобально...

Как в ShellExecute передать несколько параметров?
Допустим такой вызов ShellExecuteA(NULL, "open", "cmd.exe", "/C ipconfig" , NULL, SW_SHOW); А как...

Как ввести несколько параметров через пробел?
Всем привет такой вопрос: ести ли в пурике что-то похожее на сишную функцию scanf?

Как передать несколько параметров из ASP в dll
Форма запускает asp скрипт , который в свою очередь запускает dll. Мне надо передать dll несколько...

Передать функции массив как несколько параметров
Как передать функции массив как несколько параметров те где каждый элемент будет выступать как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru