gpt4 book ai didi

powershell - 搜索注册表并创建新项目

转载 作者:行者123 更新时间:2023-12-02 23:53:11 24 4
gpt4 key购买 nike

我想在注册表中创建New-Item并预先检查已经存在的内容。

这段代码

$items = get-item "HKCU:\SOFTWARE\Microsoft\Office\16.0\Excel\Options" 
$items.Property -match "OPEN"

返回以下内容
OPEN
OPEN1
OPEN2
OPEN3
OPEN4

现在我知道我需要创建一个名称为 New-ItemOPEN5,但是如何计算呢?也许带有 While-Loop

最佳答案

最可靠的方法是提取嵌入的数字,对其进行数字排序,然后将1添加到迄今为止的最高索引中:

$nextNdx = 1 +
([int[]] ($items.Property -match '^OPEN' -replace '\D') | Sort-Object)[-1]
  • $items.Property -match '^OPEN' -replace '\D'返回以OPEN开头的所有属性名称,并从其中删除所有非数字字符(-replace '\D')。
  • [int[]]将结果“数字字符串”转换为实际数字([int]);请注意,在PowerShell中将''$null转换为[int]会生成0
  • Sort-Object对这些数字进行排序,并且[-1]从结果数组中获取最后一个数字,即最高数字。


  • 由于使用了管道和 Sort-Object cmdlet,以上方法很方便,但并不很快。

    如果出于性能原因要避免使用管道:
    $indices = [int[]] ($items.Property -match '^OPEN' -replace '\D')
    [Array]::Sort($indices) # sort in place
    $nextNdx = 1 + $indices[-1]

    关于powershell - 搜索注册表并创建新项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53283682/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com