删除字符串Powershell中的单词

时间:2016-01-21 18:05:17

标签: powershell azure text replace

我试图在Powershell中删除行/字符串中的单词。我以几种不同的方式尝试了-replace运算符而没有结果。需要删除的数据位于包含相当多行的文本文件中,每行包含Data:Primary:然后是Azure Storage Account Key。我正在运行另一个脚本,它将遍历此txt,以便存储帐户密钥运行一些命令。

该行中的数据如下所示: 数据:主要:asdflkajsdflkj / $ asdfASDFasdf

我需要删除'数据:' '初级:'和第一个字母前的任何空格。

以下是我的剧本:

$getAccessKey = Get-Content 'file path'
$getAccessKey | ForEach-Object{
    azure storage account keys list $_
} | Set-Content 'file path'

Get-Content 'file path' | Where-Object {$_ -match 'Primary'} | Set-Content 'file path'
Get-Content 'file path' | Where-Object {$_ -replace ".*:"} | Set-Content 'file path'

以下脚本是我之前尝试的脚本:

$getAccessKey = Get-Content 'file path'
$getAccessKey | ForEach-Object{
    azure storage account keys list $_
} | Set-Content 'file path'

Get-Content 'file path' | Where-Object {$_ -match 'Primary'} | Set-Content 'file path'
Get-Content 'file path' | Where-Object {$_ -replace "Data:"} | Set-Content 'file path'

这些脚本都没有得到结果,但它似乎没有拿起':'或文字'数据:'

2 个答案:

答案 0 :(得分:0)

根据你的评论,一个更好的解决方案就是运行类似的东西

$StorageAccountKeys = @{}
Get-AzureRmStorageAccount | `
    foreach {$StorageAccountKeys.Add($_.StorageAccountName, `
    ((Get-AzureRmStorageAccountKey -ResourceGroupName `
    $_.ResourceGroupName -Name $_.StorageAccountName).Key1)) } 

这将创建一个包含订阅中所有存储帐户名和密钥的对象。

Name           Value
----           -----
storagename    xxxxxxxxxxxxxxxxxxxx-storagekey-xxxxxxxxxxxxxxxxxxxxx
storagename1    xxxxxxxxxxxxxxxxxxxx-storagekey1-xxxxxxxxxxxxxxxxxxxxx
storagename 2   xxxxxxxxxxxxxxxxxxxx-storagekey2-xxxxxxxxxxxxxxxxxxxxx

您可以使用foreach访问,也可以使用$StorageAccountKeys.storagename

访问

答案 1 :(得分:0)

好消息,我在摆弄了一分钟之后想出了自己问题的答案。

$getAccessKey = Get-Content 'file path'
$getAccessKey | ForEach-Object{
azure storage account keys list $_
} | Set-Content 'file path'

Get-Content 'file path' | Where-Object {$_ -match 'Primary'} | Set-Content 'file path'
Get-Content 'file path' | ForEach-Object {$_ -replace "\w{4}:\s+\w{7}:\s+", ""} | Set-Content 'file path'