我正在尝试从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]
答案 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