2017-09-17 83 views
1

我想分開一個非常選擇的PowerShell命令輸出部分。輸出看起來像這樣Picture of Output。我想要做的是刪除頂部和底部的行,並隔離數字並將其分配給一個數組。到目前爲止,我在研究中已經能夠刪除頂線。我到目前爲止的代碼是這樣的:如何隔離PowerShell命令的輸出的特定部分?

echo working 
cd C:\Users\elias\AppData\Local\Android\sdk\platform-tools 
./adb kill-server 
./adb start-server 
$a = ./adb devices 
$lines = $a[1..$a.count] 
$lines 
Start-Sleep -s 10 

有了這段代碼,我省略了第一行,但保留了空行和數字上的附加標籤。無論如何要將數字分配給單獨的數組。注意在某些情況下,當我使用這個代碼時,會有更多的行與數字相似。因此,我可能需要在數組中保留多個數字。

我將不勝感激任何方式的幫助。我已經看過這個網站,並沒有找到一個例子。

非常感謝,

埃利亞斯

回答

0

你靠近。使用範圍運算符..,並計算正確的索引。

$a = 'first line', 1, 2, 'last line' 
$b = $a[1..(($a.Count) - 2)] 
$b 
-- 
1 
2 

我目前沒有直接訪問PowerShell的權限,所以我使用的是PowerShell在線解釋器。我不確定還有多少信任。


$a = 'first line', '1babhdjf','12845783', '89872hjdf', 'last line' 
$lines = $a[1..(($a.Count) - 2)] 
$lines 

1babhdjf 
12845783 
89872hjdf 
+1

嗨,我想你可能誤解了我。我希望每行的所有數字都有自己的數組。示例{1babhdjf,12845783,89872hjdf}。我非常感謝你的幫助。我是PowerShell腳本的新手,所以如果你可以給一點點指導,它將不勝感激。謝謝。 –

+0

@EliasRC:*「我希望每行的所有數字都在那裏(原文如此)在數組中。」*他們是。增加了一個更明確的例子。如果不對,請更明確地表達您的意見。簡單的代碼,而不是鏈接到圖形。像我的第一行代碼,請。 –

0

你應該能夠做到這一點的1行代碼

$a = ./adb devices | where {$_ -match '(.*)device$'} | % {$Matches[1]} 

的命令,其中{$ _ -match '(。*)設備$'}會得到你所有與設備

對於每個與設備結束線,命令%結束線{$相配[1]}將獲得您的第一個元素 - 這是該裝置的序列號

+0

你好,感謝回覆。我嘗試了你的迴應,並且我得到了一個號碼和標籤設備。它不會省略設備標籤。我完全複製了它。有什麼我做錯了嗎? –

+0

但它確實擺脫了額外的行,所以謝謝你,我明白 –

+0

我更新了答案..請再試一次..請提供此命令的輸出。我目前在Mac上無法測試自己 –