我正在使用PowerShell遠程配置來自各個供應商的存儲陣列。該腳本允許我連接到沒有問題的陣列。從那裏我通過plink.exe使用REST API調用或遠程SSH運行命令。這是我的問題。當使用plink時,我需要查詢數組,然後根據輸出條件執行操作。問題是輸出以字符串格式返回。這對我造成了一個問題,因爲我想對返回的字符串進行排序並提取部分內容,並根據輸出向用戶提供選項。將PowerShell中的返回字符串轉換爲分隔數據並導出
示例 - 列出卷
if ($sel_vendor -eq 3){ $ibm_ex_vols = & $rem_ssh $rem_ssh_arg1 $rem_ssh_arg2 $array_user"@"$array_mgmt_ip "-pw" $readpass "lsvdisk" foreach ($i in $ibm_ex_vols){ write-host $i } }
下面是代碼
id name IO_group_id IO_group_name status mdisk_grp_id mdisk_grp_name capacity type FC_id FC_name RC_id RC_name vdisk_UID fc_map_count copy_count fast_write_state se_copy_count RC_change compressed_copy_count parent_mdisk_grp_id parent_mdisk_grp_name
0 Test1 0 io_grp0 online 0 SVC_SYSTEM_POOL 10.00GB striped 600507680C80004E980000000000074B 0 1 empty 1 no 0 0 SVC_SYSTEM_POOL
1 Test2 0 io_grp0 online 0 SVC_SYSTEM_POOL 10.00GB striped 600507680C80004E980000000000074C 0 1 empty 1 no 0 0 SVC_SYSTEM_POOL
2 Test3 0 io_grp0 online 0 SVC_SYSTEM_POOL 10.00GB striped 600507680C80004E980000000000074D 0 1 empty 1 no 0 0 SVC_SYSTEM_POOL
3 Test4 0 io_grp0 online 0 SVC_SYSTEM_POOL 10.00GB striped 600507680C80004E980000000000074E 0 1 empty 1 no 0 0 SVC_SYSTEM_POOL
的輸出,我想什麼,能夠做的是保存這些信息,然後選擇頁眉和來自id和name列的數據。我能夠使用out-file命令將數據輸出到txt文件。一旦我這樣做了,我使用Excel將其轉換爲使用帶有分隔符選項的固定分隔文件。雖然這工作,我需要找出一個動態的解決方案。
由於列的寬度將改變取決於各種值有多長(例如具有長名稱使名稱列比平常更長的系統),我會做的是執行一個正則表達式匹配捕獲每個頭文件列表幷包含空格,然後使用頭文件的長度構造一個寬度分隔的正則表達式匹配,可將每行分解爲PSCustomObjec t與值,你會被設置爲導出爲CSV或做任何你想要的。 – TheMadTechnician