Tôi đang vật lộn một chút để loại bỏ dòng đầu tiên (ID mục) của một mảng.PowerShell Xóa mục [0] khỏi một mảng
$test.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
Để liệt kê tất cả các tùy chọn tôi đã cố gắng ,$test | gm
và nó nêu rõ:
Remove Method void IList.Remove(System.Object value)
RemoveAt Method void IList.RemoveAt(int index)
Vì vậy, khi tôi cố gắng $test.RemoveAt(0)
tôi nhận được lỗi:
Exception calling "RemoveAt" with "1" argument(s): "Collection was of a fixed size."At line:1 char:1
+ $test.RemoveAt(1)
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : NotSupportedException
Vì vậy, cuối cùng tôi đã tìm thấy here rằng mảng của tôi cần phải thuộc loại System.Object
để có thể sử dụng $test.RemoveAt(0)
. Có cách nào tốt nhất để khai báo tất cả các mảng trong phần đầu của tập lệnh dưới dạng danh sách? Hoặc là tốt hơn để chuyển đổi các mảng với $collection = ({$test}.Invoke())
vào danh sách sau này khi chức năng này là cần thiết?
Ưu và khuyết điểm của cả hai loại là gì? Cảm ơn sự giúp đỡ của bạn.
Được thăng hạng, điều này đã thực hiện mẹo cho tôi. Và nó đẹp và súc tích. – Spikee
Điều này có thể hoạt động không đúng nếu mảng chứa giá trị trùng lặp. –
@RonMacNeil, điểm tốt. Tôi đã cập nhật câu trả lời của mình. –