Powershell 列出未通过 match 和 notmatch 安装的应用程序
Powershell list app which is not installed by match and notmatch
我想问一下如何使用正则表达式列出不是从数组安装的应用程序。下面是我的代码。
- 我想列出所有与 $programy_zjisteni 匹配的安装应用程序。有用吗
- 我想列出所有与 $programy_zjisteni 不匹配的非安装应用程序。不起作用。
也许我应该使用 soma 过滤器?或者?
感谢您的帮助。
$nainstalovane_programy = (Get-WmiObject -Class Win32_Product).name
#Programy, ktere kontroluji
$programy_zjisteni = @(
"landesk.*Agent"
"Logmanager Event Sender"
)
$installed_programs = @()
$not_installed_programs = @()
foreach ($program in $nainstalovane_programy)
{
foreach ($x in $programy_zjisteni)
{
if ($program -match $x)
{
$installed_programs += $program
}
else
{
$not_installed_programs += $program
}
}
}
$installed_programs
$not_installed_programs
如果我没理解错的话,像这样的东西应该有用:
$nainstalovane_programy = (Get-WmiObject -Class Win32_Product).name
#Programy, ktere kontroluji
$programy_zjisteni = @(
"landesk.*Agent"
"Logmanager Event Sender"
)
$installed_programs = $nainstalovane_programy | Where-Object {
$program = $_
$is_installed = @($programy_zjisteni | Where-Object { $program -match $_ }).Length -gt 0
$is_installed
}
$not_installed_programs = $nainstalovane_programy | Where-Object {
$installed_programs -notcontains $_
}
$installed_programs
$not_installed_programs
如果您确实希望 $not_installed_applications
成为不匹配任何已安装应用程序的模式列表,请尝试:
$not_installed_programs = $programy_zjisteni | Where-Object {
$pattern = $_
$is_not_installed = @($nainstalovane_programy | Where-Object { $_ -match $pattern }).Length -eq 0
$is_not_installed
}
我想问一下如何使用正则表达式列出不是从数组安装的应用程序。下面是我的代码。
- 我想列出所有与 $programy_zjisteni 匹配的安装应用程序。有用吗
- 我想列出所有与 $programy_zjisteni 不匹配的非安装应用程序。不起作用。
也许我应该使用 soma 过滤器?或者?
感谢您的帮助。
$nainstalovane_programy = (Get-WmiObject -Class Win32_Product).name
#Programy, ktere kontroluji
$programy_zjisteni = @(
"landesk.*Agent"
"Logmanager Event Sender"
)
$installed_programs = @()
$not_installed_programs = @()
foreach ($program in $nainstalovane_programy)
{
foreach ($x in $programy_zjisteni)
{
if ($program -match $x)
{
$installed_programs += $program
}
else
{
$not_installed_programs += $program
}
}
}
$installed_programs
$not_installed_programs
如果我没理解错的话,像这样的东西应该有用:
$nainstalovane_programy = (Get-WmiObject -Class Win32_Product).name
#Programy, ktere kontroluji
$programy_zjisteni = @(
"landesk.*Agent"
"Logmanager Event Sender"
)
$installed_programs = $nainstalovane_programy | Where-Object {
$program = $_
$is_installed = @($programy_zjisteni | Where-Object { $program -match $_ }).Length -gt 0
$is_installed
}
$not_installed_programs = $nainstalovane_programy | Where-Object {
$installed_programs -notcontains $_
}
$installed_programs
$not_installed_programs
如果您确实希望 $not_installed_applications
成为不匹配任何已安装应用程序的模式列表,请尝试:
$not_installed_programs = $programy_zjisteni | Where-Object {
$pattern = $_
$is_not_installed = @($nainstalovane_programy | Where-Object { $_ -match $pattern }).Length -eq 0
$is_not_installed
}