我对 PowerShell 完全陌生。我昨天才开始学习。当我找到一个名为“在紧急情况发生之前立即学习 Windows PowerShell”的资源时,我意识到这个标题是多么贴切。
PowerShell 已经提供了一组非常丰富的原语来搜索注册表。但是,我的要求更复杂一些。给定一组 GUID,我想在注册表中找到它们。然后,根据注册表项和值,我想找出它们的依赖关系。
我的目标是提供完整的 COM 依赖关系的详细报告。
我需要了解的基本知识是:
- 如何在 PowerShell 中进行迭代?
- 如何将中间结果保存在数组或列表中?
答案1
答案2
我们再试一次。
powershell 中的迭代通过以下三种方式之一完成:
- 在数组上使用 foreach 命令:Foreach ($item in $array) { #actions }
- 使用 Powershell 选择操作来构建数组:$array = Select-childitem -Recurse
- 将数组通过管道发送到过滤器:$array | where-object{$_ -like "Search String"}
存储威胁结果的最简单方法是将其添加到初始化数组变量中。
$array = @() #Initialize array
$array += $item #Add item to array
这是在注册表中查找某些内容的一些基本示例代码。
cls
$GUID = "*{3336F667-9049-4D46-98B6-4C743EEBC5B1}*"
$RegPath = "HKLM:\"
$Results = Get-ChildItem $RegPath -Recurse -ErrorAction SilentlyContinue | Where-Object{$_ -like $GUID}
foreach ($item in $Results)
{
Write-Host $item
}
使用 Get-ChildItem 来搜索注册表是一种糟糕的方法,但它确实有效。
希望这可以帮助