【问题标题】:Powershell - Split strings of text file into chunks, then strip out unwanted infoPowershell - 将文本文件的字符串拆分成块,然后去除不需要的信息
【发布时间】:2011-02-02 23:06:12
【问题描述】:

使用 Active Directory 导出脚本。目前,该脚本可以轻松地将给定组中的用户对象作为完全限定名称导出到 .txt 文件中(即,不是报告为“用户名”,而是得到丑陋的“CN=username,OU=foo,OU=bar,DC =foo,DC=bar")。

我的 Powershell 体验充其量只是新手。到目前为止我得到了什么:

  • 加载文本文件的内容
  • 在“,”处分割文本文件的内容
  • 将这些内容写入第二个文本文件。

  • 生成的文本文件如下所示:

    "CN=username  
    OU=foo  
    OU=bar  
    DC=foo  
    DC=bar"
    

我的目标:

  • 保存任何以“CN=”开头的文本行(是的,我想保留它的开头)
  • 删除其他所有内容
  • 从结果行的开头去除“CN=”
  • 注意:用户名长度不同

到目前为止我所拥有的:

$a = (Get-Content c:\test.txt | foreach-Object {$_.split(",,") })  
Out-File c:\results.txt -inputObject $a

我完全不知道如何在文本文件中搜索带有通配符的模式(即搜索包含“CN=* 的任何行并仅保留这些行和那些行),然后将结果粘贴到.txt。

非常感谢您提供的任何和所有指导。

【问题讨论】:

    标签: powershell active-directory powershell-2.0


    【解决方案1】:

    Select-String 允许这样做。 PowerShell 有点像 grep

    但是,如果我理解正确,您可以更轻松地做到这一点

    $a = (Get-Content c:\test.txt | foreach-Object {$_.split(",,") }) -match '^CN='
    

    比较运算符可以应用于对象列表并仅返回匹配项。

    【讨论】:

      【解决方案2】:

      也许还可以查看Quest AD cmdlets 并将其用作您的导出脚本。这样你就可以准确地选择你想要的属性,而不必过滤文本文件的输出,例如

      Get-QADUser -Searchroot foo.bar/MyOu | Select Name, DisplayName, email 
      

      【讨论】:

      猜你喜欢
      • 2011-05-09
      • 2020-07-05
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-29
      • 2013-09-30
      相关资源
      最近更新 更多