2017-04-13 6 views
-1

以下のような文字列があり、PowerShellを使用して解析する必要があります。私は唯一の「EntityPath」までの文字列を保持し、実体パスした後、すべてを取り出したい:接続文字列のプロパティを解析する

Endpoint=sb://abcdefg.servicebus.windows.net/;SharedAccessKeyName=listenkey_1137;SharedAccessKey=W2c26OiBwae9f/vgPcJWgtD709oTTJu1VlB8i4OkqUc=;EntityPath=listen_1137 
+0

可能な重複http://stackoverflow.com/questions/24044226/powershell-remove-text-after - 最初の特殊文字のインスタンス) –

答えて

0
$testStr = "Endpoint=sb://abcdefg.servicebus.windows.net/;SharedAccessKeyName=listenkey_1137;SharedAccessKey=W2c26OiBwae9f/vgPcJWgtD709oTTJu1VlB8i4OkqUc=;EntityPath=listen_1137" 

$parts = $testStr -split "EntityPath" 

Write-Host $parts[0] 

これは

0

を働くかもしれない、私はあなたが今求めているものかどうか分かりませんそれは私が仮定する第二の質問です。私はあなたの質問を多少英語が壊れているように理解しようとします。ここで

function Invoke-MyWork($testStr) 
{ 
    $parts = $testStr -split "EntityPath" 
    $parts[0] 
} 
$originalValue = "Endpoint=sb://abcdefg.servicebus.windows.net/;SharedAccessKeyName=listenkey_1137;SharedAccessKey=W2c26OiBwae9f/vgPcJWgtD709oTTJu1VlB8i4OkqUc=;EntityPath=listen_1137" 

$upToEntityPath = Invoke-MyWork $originalValue 


Write-Host "UpToEntityPath: $($upToEntityPath)" 
Write-Host "OriginalValue: $($originalValue)" 
0

正規表現を使用したソリューション。

$ep = "Endpoint=sb://abcdefg.servicebus.windows.net/;SharedAccessKeyName=listenkey_1137;SharedAccessKey=W2c26OiBwae9f/vgPcJWgtD709oTTJu1VlB8i4OkqUc=;EntityPath=listen_1137" 
[regex]::Match($ep, 'EntityPath=([^;|\s]+)').Groups[1].Value # output: listen_1137 
[regex]::Match($ep, '(EntityPath=[^;|\s]+)').Groups[1].Value # output: EntityPath=listen_1137 
0

はこれを試してみてください。

$mystring="Endpoint=sb://abcdefg.servicebus.windows.net/;SharedAccessKeyName=listenkey_1137;SharedAccessKey=W2c26OiBwae9f/vgPcJWgtD709oTTJu1VlB8i4OkqUc=;EntityPath=listen_1137" 
$NameValue=$mystring -replace ";", "`n" | ConvertFrom-StringData 
$NameValue.EntityPath 
([PowerShellは特殊文字の最初のインスタンスの後のテキストを削除]の