2016-01-21 221 views
0

我正試圖刪除Powershell中的一行/字符串中的單詞。我用幾種不同的方式嘗試了替換運算符而沒有結果。需要刪除的數據位於一個文本文件中,其中每行都有Data:Primary:然後是一個Azure存儲帳戶密鑰。我正在運行另一個腳本,它將循環訪問存儲帳戶密鑰的這個txt以運行一些命令。刪除字符串中的單詞Powershell

在該行的數據是這樣的: 數據:主: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' 

無論這些腳本得到一個結果,看來雖然它不拾取':'或文本'數據:'

+0

如果您正在解析存儲密鑰,那麼爲什麼不將它們保存爲可以更輕鬆地從Azure中直接解析或直接提取的格式? –

+0

我試圖創造一種方式,我再也不必這樣做,或者去蔚藍色的地方拿到鑰匙來獲取我要找的信息。鑑於100多個存儲帳戶和後續共享,檢查文件共享的大小可能需要相當長的一段時間。這和我想自動化這個過程並且讓它抓住將來創建的任何新股票/賬戶。 – TheNoobofNoobs

回答

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' 
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

+0

這並不像我想要的那樣工作。但我知道了。非常感謝你的協助。 – TheNoobofNoobs