2017-09-01 75 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的答案有點簡單。好一個。 :)