You need to enable JavaScript to run this app. 如何使用PowerShell从文本文件中提取用户名、所有者、权限等特定值
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell从文本文件中提取用户名、所有者、权限等特定值

PowerShell 文本字段提取实现方案

提取目标说明

  • 仅由数字组成的用户名片段:从Username字段值中提取字母后的纯数字部分
  • 所有者名称:Owner字段冒号后的完整值
  • 权限配置信息:Default Privileges节点下的权限列表

实现代码

你可以直接使用switch -Regex逐行读取匹配文件内容,性能和可读性都比较好,示例代码如下:

# 初始化存储结果的对象
$extractResult = [PSCustomObject]@{
    纯数字用户名 = $null
    所有者名称 = $null
    权限配置 = @()
}
$privFlag = $false

# 替换为你的实际文件路径
$targetFilePath = "C:\你的文件路径\data.txt"

switch -Regex -File $targetFilePath {
    # 匹配包含Username和Owner的行,同时提取两个字段
    '^Username:\s+[A-Za-z]*(\d+)\s+Owner:\s+(\S+)' {
        $extractResult.纯数字用户名 = $matches[1]
        $extractResult.所有者名称 = $matches[2].Trim()
        continue
    }
    # 匹配权限起始行,标记后续行需要提取权限
    '^Default Privileges:' {
        $privFlag = $true
        continue
    }
    # 提取权限内容
    { $privFlag } {
        $trimedLine = $_.Trim()
        if ($trimedLine) {
            $extractResult.权限配置 = $trimedLine -split '\s+'
            # 如果权限只有一行,提取完成后关闭标记,有多行的话可以去掉这行
            $privFlag = $false
        }
        continue
    }
}

# 输出最终提取结果
$extractResult | Format-List

代码说明

  • 如果你的文件包含多个用户的配置块,只需要在每个块结束的位置重置$extractResult和$privFlag变量即可批量提取
  • 正则规则可以根据你实际的文件格式微调,比如用户名前缀如果有特殊字符,调整[A-Za-z]的匹配范围即可

内容的提问来源于stack exchange,提问作者Tarun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 21:06:03