2017-01-15 2 views
1

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 Get-Content @ 22시 14분

에서 iamsmith41 년 1 월 (11)은 System.Array 아닌 System.Collections.ArrayList 반환합니다. 전자는 RemoveRange() 방법이 없습니다. 또한 표적을 움직이지 마십시오. 답변 중 하나가 현재 질문에 설명 된 문제를 해결하면 해당 대답을 수락하는 것을 고려하십시오. 신규 또는 추가 질문이있는 경우 : 새로운 질문을 올리십시오. - Ansgar Wiechers Jan 11 at 23:33

확인. 나는 답을 표시했다. 하지만 그 일을 끝내는 방법을 알려주세요 (removerange() 메서드). 미리 감사드립니다. - iamsmith41 2 일 전

$array += ,[Collections.ArrayList]@(Get-Content $_.FullName)으로 충분합니다. 추가 도움이 필요하면 새로운 질문을 올리십시오. -2일 전


안스 Wiechers 어떻게 사용해야 그 위에 같은 오브젝트 유형이 Collections.ArrayList 등입니다 알고? 이것이 System.Array이고 System.Collections.ArrayList이 아니라는 것을 아는 방법은 무엇입니까?

+1

'($ 식) .GetType(). FullName' 또는'[Type] :: GetTypeArray ((, ($ expression))) [0] .FullName'. – PetSerAl

답변

0

보기 유형에 대한 당신이 할 수 있습니다

표현 |

PS C:\>(Get-Item '.').GetType() 

IsPublic IsSerial Name       BaseType 
-------- -------- ----       -------- 
True  True  DirectoryInfo     System.IO.FileSystemInfo 

PS C:\>(Get-Item '.').GetType().FullName 
System.IO.DirectoryInfo

나 :

$yourfile='c:\temp\histo3.txt' 
$content=Get-Content $yourfile 
$content[0..[Math]::abs($content.Count - 4)] | Set-Content $yourfile 
4

당신은 GetType() 방법을 통해 객체의 유형을 판별 할 수 있습니다 : 당신은 당신이 그것을 할 수있는 파일로 지난 3 줄을 제거 할 수있는 경우

을 회원-얻을 수 있지만,

PS C:\>Get-Item '.' | Get-Member 

    TypeName: System.IO.DirectoryInfo 

Name    MemberType  Definition 
----    ----------  ---------- 
Mode    CodeProperty System.String Mode{get=Mode;} 
Create    Method   void Create(), void Create(System.Securi... 
CreateObjRef  Method   System.Runtime.Remoting.ObjRef CreateObj... 
CreateSubdirectory Method   System.IO.DirectoryInfo CreateSubdirecto... 
...

전자는 메타는 통보 제공하는 다음 Get-Member cmdlet를 사용하여 이름, 기본 유형, 어셈블리와 같은 객체에 대한 내용 (GetType()의 출력을 Format-List *으로 파이프하여 전체 목록을 얻습니다).

후자는 주로 개체 (또는 매개 변수 -Static를 사용하는 경우 클래스의 정적 멤버)의 멤버 (속성 및 메서드)에 대한 정보를 얻기위한 것입니다. 컬렉션 객체의 멤버에 대한 정보가 필요하다면 $col | Get-Member 대신 Get-Member -InputObject $col을 사용해야합니다. 파이프 라인을 사용하면 컬렉션이 언로드되고 컬렉션 객체 자체의 멤버가 아닌 컬렉션 요소의 멤버를 얻게되므로주의해야합니다.

클래스를 알고 있으면 보통 documentation에서 추가 정보를 검색합니다. 선호하는 검색 엔진에 수업 또는 회원 이름을 입력하십시오.