Powershell 如何从命令行拆分内容

Powershell 如何从命令行拆分内容,powershell,split,Powershell,Split,我的问题是如何在powershell中拆分命令行提示的内容 我想在我的服务器上找到所有OU的路径,以便以后使用它们 get-aduser -Filter * | Select DistinguishedName | findstr "OU=" OUTPUT CN=Username1,OU=firma1,DC=bc,DC=local CN=Username2,OU=firma2,DC=ad,DC=local and I want only OU=firma1,DC=bc,DC=local O

我的问题是如何在powershell中拆分命令行提示的内容 我想在我的服务器上找到所有OU的路径,以便以后使用它们

get-aduser -Filter * | Select DistinguishedName | findstr "OU="

OUTPUT
CN=Username1,OU=firma1,DC=bc,DC=local
CN=Username2,OU=firma2,DC=ad,DC=local

and I want only 
OU=firma1,DC=bc,DC=local
OU=firma2,DC=ad,DC=local
这应该起作用:

Get-ADUser -Filter * |
    Where-Object { $_.DistinguishedName.IndexOf('OU=') -gt 0 } |
    ForEach-Object { $_.DistinguishedName.Substring($_.DistinguishedName.IndexOf('OU=')) }
此代码过滤掉任何不在OU中的对象,其中包括
Users
内置容器中的对象,如
CN=Administrator、CN=Users、DC=bc、DC=local
。您还可以使用
ForEach对象中的
if
语句处理这些用户,这应该可以:

Get-ADUser -Filter * |
    Where-Object { $_.DistinguishedName.IndexOf('OU=') -gt 0 } |
    ForEach-Object { $_.DistinguishedName.Substring($_.DistinguishedName.IndexOf('OU=')) }
此代码过滤掉任何不在OU中的对象,其中包括
Users
内置容器中的对象,如
CN=Administrator、CN=Users、DC=bc、DC=local
。您还可以使用
ForEach对象中的
if
语句处理这些用户

直接使用.NET怎么样

这将
区分名称
在逗号处分成两部分(即第一个逗号之前的所有内容和之后的所有内容),并仅返回第二部分(数组索引
[1]

我可能会在其末尾添加一个
排序对象
和一个
选择对象-唯一

值得一读:,也许这就是你真正想要的


此方法与PowerShell本机
-split
运算符类似:

$DNs = Get-ADUser -Properties DistinguishedName | Select -ExpandProperty DistinguishedName
$DNs -split ',',2 | where { $_.StartsWith("OU=") }
直接使用.NET怎么样

这将
区分名称
在逗号处分成两部分(即第一个逗号之前的所有内容和之后的所有内容),并仅返回第二部分(数组索引
[1]

我可能会在其末尾添加一个
排序对象
和一个
选择对象-唯一

值得一读:,也许这就是你真正想要的


此方法与PowerShell本机
-split
运算符类似:

$DNs = Get-ADUser -Properties DistinguishedName | Select -ExpandProperty DistinguishedName
$DNs -split ',',2 | where { $_.StartsWith("OU=") }

我来这里是为了提到
获得组织单元
。当被问及在不需要任何其他操作的情况下,这将很好地解决问题时,我在这里提到了
getadorganizationalUnit
。正如我所问的那样,这将在不需要任何其他操作的情况下很好地工作