2011-02-02 32 views
0

使用Active Directory導出腳本。目前,該腳本可以輕鬆地將用戶對象從給定的組導出爲.txt文件,作爲完全限定的名稱(即。而不是報告爲「用戶名」,您會看到醜陋的「CN = username,OU = foo,OU = bar,DC = FOO,DC =欄「)。Powershell - 將文本文件的字符串拆分爲塊,然後去除不需要的信息

我的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 

我完全失去了對如何搜索文本文件的模式與通配符(即。 SEACH對包含「CN = *,並保持這些行的任何行,只有那些線),然後堅持的結果入.txt。

非常感謝你的任何和所有的指導你可能會提供。

回答

3

Select-String會允許的。這有點grep的PowerShell的。

但是,如果我理解正確的話,你可以做到這一點更容易

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

位比較運算符可以應用於對象的列表d僅返回匹配的項目。

+0

謝謝你,這個完美的作品:) – Joshua 2011-02-04 20:13:42

1

也許你也可以看一下Quest AD cmdlets並用它作爲你的導出腳本。這樣,您就可以選擇所需的屬性而不必過濾文本文件的輸出,例如

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

如果你正在使用Windows Server 2008 R2,你也有機會獲得新的AD PowerShell命令 - http://technet.microsoft.com/en-us/ library/ee617195.aspx – Sam 2011-02-04 05:45:00

相關問題