$adapterKeys = $null
$adapterKeys = Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}"
$adapters = $null
$adapters = $adapterKeys | Get-ItemProperty
$adapters | Select -First 1
当指定一个终止错误时,没有返回数据:
-ErrorAction "Stop"
$adapterKeys = $null
$adapterKeys = Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}" -ErrorAction "Stop"
$adapters = $null
$adapters = $adapterKeys | Get-ItemProperty
$adapters | Select -First 1
和
ErrorAction "Stop"
抓住错误,但是由于数据不再返回,这会破坏目的。
因此,使用这些约束,我如何返回必要的数据,但也忽略了错误?请注意,我不想忽略所有错误,否则我只会使用
try{} catch{}
。是
-ErrorAction "SilentlyContinue"
和/或
Get-ChildItem
的预期行为吗?我不记得以前遇到过这样的问题。
for参考,丢弃的错误是:
-ErrorAction "Stop"
这是由于目标注册表密钥的第键被许可,因此即使是本地管理员也无法访问。如前所述,这对于此用例是无关紧要的,因为我不需要此
Get-ChildItem : Requested registry access is not allowed.
At line:2 char:16
+ … apterKeys = Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Control\Cla …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (HKEY_LOCAL_MACHINE\…BE10318}\Properties:String) [Get-ChildItem], SecurityException
+ FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.GetChildItemCommand
子钥匙的数据。仅来自其他子钥匙。一个解决方法是直接在所有目标子键上使用
Properties
,因此绝不会遇到
Properties
键或这个特定错误。但是,我不知道会有多少个子钥匙,尽管它们可能总是有一个一致的数字命名惯例,但我想避免做出这些假设。此外,这个问题更多地是关于我对
Get-ItemProperty
和/或终止错误的行为的误解。
Edit:我遇到的一些相关问题和信息:这个问题建议使用
Properties
和
Get-ChildItem
用于后处理错误,但是这对我来说并没有很多意义。
这个问题表明,尽管我怀疑这不适用,但“半终止”错误类型的文献不佳。还讨论了我从未听说过的关键字,也没有使用过。Fwiw,我的目标环境是Windows Powershell 5.1,尽管我在Powershell 7+上也有同样的问题,并且在Win11和Win11的最新版本上也有同样的问题。
-ErrorAction "SilentlyContinue"
和/或-ErrorVariable
?的这种预期行为 YES:
trap
错误,因此implirical proply the命令是该命令是一部分的一部分,导致无输出。
Get-ChildItem
和
-ErrorAction "Stop"
efrive。
-ErrorAction Stop