PowerShell拆分方法对字符串值

时间:2017-09-01 11:27:34

标签: powershell

我正在尝试从PowerShell脚本中的字符串中获取值。

字符串可以是这样的:

$TargetOU = "OU=Company Users,OU=Company,OU=Organisation Users,DC=domain,DC=local"

或者像这样:

$TargetOU = "OU=Company,OU=Organisation Users,DC=domain,DC=local"

使用以下内容将在第一个示例中返回“Company”,而在第二个示例中返回“Company,OU”。如何修改它以在两个实例中仅提供“公司”?

$TargetOU.Split('= ')[1]

3 个答案:

答案 0 :(得分:1)

您可以通过向,方法中的字符添加split来实现此目的。 这是因为您在给予split方法的每个字符处拆分字符串。 您的第一个字符串拆分为:

OU
Company
Users,OU
Company,OU
Organisation
Users,DC
domain,DC
local

,而你的第二个字符串拆分为:

OU
Company,OU
Organisation
Users,DC
domain,DC
local

使用$TargetOU.Split('= ,')时,您的第二个字符串将拆分为:

OU
Company
OU
Organisation
Users
DC
domain
DC
local

其中索引为1的元素仅为"公司",而不是"公司,OU"

答案 1 :(得分:1)

试试这个。根据您的输入示例,每次都会返回“公司”。

它的作用:将您的拆分保存在变量中并检查该变量是否包含逗号,如果您输入“OU = Company,OU = Organization Users,DC = domain,DC = local”。如果为true,则在逗号处再次拆分并将第一部分保存在变量中。我使用了与第一个拆分相同的变量名,因为我假设您希望稍后在脚本中对结果执行相同的操作,而不管输入的外观如何。

$SplitTargetOU = $TargetOU.Split('= ')[1]
if ($SplitTargetOU -like '*,*')
{
$SplitTargetOU = $SplitTargetOU.Split(',')[0]
}
编辑:J。Bergmann的回答有点简单。好一个。 :)

答案 2 :(得分:0)

此答案对我不起作用。 split方法未将字符视为字符数组。要修复它,我必须显式对其进行铸造:

"OU=Company Users,OU=Company,OU=Organisation Users,
 DC=domain,DC=local".Split('= ,')

返回

OU=Company Users,OU=Company,OU=Organisation Users,DC=domain,DC=local

但是

"OU=Company Users,OU=Company,OU=Organisation Users, 
 DC=domain,DC=local".Split([char[]]'= ,')

返回

OU
Company
Users
OU
Company
OU
Organisation
Users
DC
domain
DC
local