2017-09-01 62 views
0

我试图从我的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"

使用以下将返回 “公司” 在第一个例子,但“公司,OU “ 在第二。我如何修改这个以在两个实例中提供“公司”?

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

回答

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只是“公司”,而不是“公司”,“公司”

+0

现货感谢。我以“=”开头读取它,并以“”结束,而不是按给定的所有字符分割。那么简单,正是我所追求的。再次感谢。 – jshizzle

1

试试这个。根据您输入的例子,每次都会返回“公司”。如果您的输入是“OU =公司,OU =组织用户,DC =域,DC =本地”,那么将它保存在变量中并检查该变量是否包含逗号。如果为true,则在逗号处再次分割并将第一部分保存在变量中。我使用了与第一次拆分相同的变量名称,因为我假设您希望在脚本中稍后使用结果执行相同的操作,无论输入如何。

$SplitTargetOU = $TargetOU.Split('= ')[1] 
if ($SplitTargetOU -like '*,*') 
{ 
$SplitTargetOU = $SplitTargetOU.Split(',')[0] 
} 

编辑:J. Bergmann的答案有点简单。好一个。 :)