2017-09-01 8 views
0

PowerShellスクリプト内の文字列から値を取得しようとしています。文字列値のPowerShell分割方法

文字列は次のように来ることができます。

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

「当社の最初の例では、 "会社" を返しますが、以下のものを使用して、OU:

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

するか、このような"2番目に。どのように私は両方のインスタンスでちょうど "会社"を提供するためにこれを変更できますか?

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

答えて

1

あなたはsplit方法で文字に,を追加することによって、これを達成することができます。 これは、splitメソッドに与えられたすべての文字で文字列を分割したためです。 あなたの最初の文字列はに分割します。

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

あなたの2番目の文字列を分割しながらへ:

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

代わりに2番目の文字列を分割します$TargetOU.Split('= ,')を使用する:

OU 
Company 
OU 
Organisation 
Users 
DC 
domain 
DC 
local 

どこ要素とインデックス1は「会社、OU」ではなく「会社」のみです

+0

ありがとうございました。私は "="で始まってそれを読んでいて、与えられたすべての文字で分割するのではなく、 ""で終わりました。シンプルで正確に私が何をしたのか。再度、感謝します。 – jshizzle

1

これを試してください。あなたの入力例を考えれば、これは毎回「会社」を返します。

説明:変数に分割を保存し、 "OU = Company、OU = Organization Users、DC = domain、DC = local"を入力した場合と同じように、その変数にコンマが含まれているかどうかを確認します。 trueの場合は、コンマで再度分割し、最初の部分を変数に保存します。最初の分割と同じ変数名を使用しました。入力の外観に関係なく、後でスクリプトで結果を同じにしたいと思っているからです。

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

EDIT:J. Bergmannの答えは少しシンプルでした。良いですね。 :)