В this question мы решили проблему, но я еще не научился этому вопросу.Определение типа объекта
Ниже комментариев в посте выше:
Моя цель - Для того, чтобы позвонить каждый файл данных на основе индексации из вложенного массива и удалить последние три строки. So-
$array = New-Object Sytem.Collections.Arraylist; Get-ChildItem C:\...\test | ForEach-Object { $array += ,@(Get-Content $_.FullName) }; $array[0].removerange($array[0].count-2,2)
Но это порождает ошибку, что removerange не распознается. Я проверил -$array[0] | gm
и метода removerange действительно не было. Просто снимите и удалите. Как это сделать? - iamsmith41 11 января в 22:14@ iamsmith41
Get-Content
возвращаетSystem.Array
, неSystem.Collections.ArrayList
. Первый не имеет методаRemoveRange()
. Кроме того, пожалуйста, не перемещайте цель. Если один из ответов разрешает проблему, описанную в вашем текущем вопросе: пожалуйста, подумайте о принятии этого ответа. Если у вас есть новый или последующий вопрос: пожалуйста, напишите новый вопрос. - Ansgar Wiechers 11 января в 23:33Ok. Я отметил ответ. Но просто дайте мне знать, как это сделать (метод removerange()). Заранее спасибо. - iamsmith41 2 дня назад
$array += ,[Collections.ArrayList]@(Get-Content $_.FullName)
должно быть достаточно. Если вам нужна дополнительная помощь, отправьте новый вопрос. - Ansgar Wiechers 2 дня назад
Как узнать тип объекта, как и выше, что я должен использовать это Collections.ArrayList
и так далее? Как узнать, что это System.Array
, а не System.Collections.ArrayList
и т. Д.?
'($ expression) .GetType(). FullName' или' [Type] :: GetTypeArray ((, (выражение $))) [0] .FullName'. – PetSerAl