我一直在寻求帮助以提高性能,因为我的方法确实很愚蠢,但是有效
我在stackoverflow上进行了一些搜索,但没有找到与我的想法相符的内容
ForEach($app in $apps){
ForEach($removeapp in $applist)
{
If ($app.Displayname -like $removeapp.appname) {
Write-Host "Removing: " $app.Displayname -ForegroundColor Green
}
Else{
Write-Host "Skiping: " $app.Displayname -ForegroundColor Red
}
}
}
我基本上是在比较它们中的每一个,这些使我x ^ y的可能性非常糟糕,并使它的帮助变慢,如何更快地做到这一点?
$apps
包含映像中的每个预配置应用程序包
例如-> Displayname = Microsoft.ZuneMusic
$applist
包含那些应用程序名称,这些应用程序名称在CSV中被删除
例如-> Appname = Microsoft.ZuneVideo
我想清楚地看到哪些被跳过,哪些被删除。
答案 0 :(得分:1)
我想我会为此使用正则表达式-match
运算符。
如下所示:
# build a regex from all the app displaynames joined using the regex OR ("|") character
$appNames = ($apps | ForEach-Object { [regex]::Escape($_.DisplayName) }) -join '|'
$applist | ForEach-Object {
if ( $_.appname -match $appNames ) {
Write-Host "Removing: $($_.appname)" -ForegroundColor Green
}
else {
Write-Host "Skipping: $($_.appname)" -ForegroundColor Red
}
}
希望有帮助