[英]How do I get an array of strings from a powershell pipeline?
我有一個目錄名稱列表,我想將其轉換為絕對路徑,並刪除所有無效的名稱。 我最初的嘗試是管道
$dirs = 'dir1', 'dir2', 'dir3'
$paths = $dirs | % { Resolve-Path -ea 0 $_ } | Select -ExpandProperty Path
但是,我得到的是[Object[]]
類型而不是[String[]]
。 我嘗試確保路徑存在(通過在管道中添加一個? { Test-Path $_ }
步驟,但這沒有幫助。
我究竟做錯了什么? 如何獲取目錄作為字符串列表? 我需要這樣做,以便可以將數組連接到另一個字符串數組,特別是
$newpath = (($env:PATH -split ';'), $paths) -join ';'
這似乎可行:
$newpath = (@($env:PATH) + $paths) -join ';'
您實際上並不需要顯式將其強制轉換為[string []]。 Powershell將從命令上下文中找出來並將數據強制轉換為正確的類型。
object[]
只是PowerShell中的默認數組,在這種(和大多數情況下)都沒有關系。 您的問題是,您正在嘗試使用(arr1, arr2)
加入數組。 這是什么做實際上可以創造是有兩個數組對象的數組,因為,
是一個數組建設運營商。 嘗試使用+
連接數組,如下所示:
$dirs = 'dir1', 'dir2', 'dir3'
$paths = $dirs | % { Resolve-Path -ea 0 $_ } | Select -ExpandProperty Path
$newpath = (($env:PATH -split ';') + $paths) -join ';'
您甚至可以跳過拆分,然后執行
$dirs = 'dir1', 'dir2', 'dir3'
$paths = $dirs | % { Resolve-Path -ea 0 $_ } | Select -ExpandProperty Path
$newpath = "$env:PATH;$($paths -join ';')"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.