Get-Members는 (는) Get-Members입니다. powershell이 (가) 도움이되고 컬렉션을 게시하려고합니다. 여러 유형의 항목이있는 배열이있는 경우 각 유형의 멤버가 표시됩니다 (예 : Get-ChildItem) 그리고 현재 디렉토리에 FileInfos 및 DirectoryInfos가 있고 ls | gm 파이프가 있습니다 그것은 FileInfos의 당신 회원들과 DirectoryInfos의 구성원)의 또 다른 그룹이 표시됩니다 :
(7) C:\ -» ls
Directory: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 5/28/2010 8:19 AM .hg
d---- 5/13/2010 3:37 PM Build
…
-a--- 4/22/2010 11:21 AM 2603 TODO.org
(8) C:\ -» ls | gm
TypeName: System.IO.DirectoryInfo
Name MemberType Definition
---- ---------- ----------
Mode CodeProperty System.String Mode{get=Mode;}
Create Method System.Void Create(System.Security.AccessControl.Direct...
…
TypeName: System.IO.FileInfo
Name MemberType Definition
---- ---------- ----------
Mode CodeProperty System.String Mode{get=Mode;}
AppendText Method System.IO.StreamWriter AppendText()
…
나는 보통 무엇을, 나는 펼쳐진 회원보고 있지 않다 확인하기를) ("$ s.GetType을 시도하다 .Name "먼저 처리 할 항목을 확인하십시오. "$ s = @ (Invo"(@는 배열입니다.)
배열에 항목이 포함되어 있는지 확인하려면 - 포함 연산자
(9) C:\ -» @(1,2,3) -contains 1
True
난 당신이 문자열 배열을 가지고 생각, 그래서 당신은 같은 문자열 리터럴을 사용할 수 있습니다 만료가 정확히 일치하지 않은 경우 (당신을
(10) C:\ -» @("Stuff","you've","got","might have","Expired") -contains "Expired"
True
그러나 "Connection Expired 1/1/2010"과 같이 만료 된 요소를 찾고 있었음) 일치 항목을 찾고 th를 확인해야합니다. 전자 수 :
(23) C:\ -» @("Stuff","you've","got","might have","Connection Expired 1/1/2010") -contains "Expired"
False
(24) C:\ -» @("Stuff","you've","got","might have","Connection Expired 1/1/2010") | ?{$_.Contains("Expired")}
Connection Expired 1/1/2010
(33) C:\ -» $xs = @("Stuff","you've","got","might have","Connection Expired 1/1/2010") | ?{$_.Contains("Expired")}
(34) C:\ -» $xs.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
(35) C:\ -» $xs
Connection Expired 1/1/2010
이 경우 일치 항목이 하나만 있으므로 powershell이 문자열을 펼칩니다. 얼간이. 일치 항목이 두 개 이상인 경우 :
(36) C:\ -» $xs = @("Stuff","you've","got","might Expired have","Connection Expired 1/1/2010") | ?{$_.Contains("Expired")}
(37) C:\ -» $xs.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
(38) C:\ -» $xs
might Expired have
Connection Expired 1/1/2010
이제 배열입니다.
다행히, 문자열과 배열 모두 길이 속성이 있습니다
(39) C:\ -» $xs.Length
2
(40) C:\ -» "Bob".Length
3
그래서 당신이 있는지 "만료"가 포함 된 결과의 길이를 확인 할 수있는의 만료 :
(41) C:\ -» $xs = @("Stuff","you've","got","might Expired have","Connection Expired 1/1/2010") | ?{$_.Contains("Expired")}
(42) C:\ -» if ($xs.Length -gt 0) { Write-Host "Whoas, stuff's expired, dog." }
Whoas, shit's expired, dog.
(아마도 누군가 LINQ의 Any와 같은 일부 술어를 만족시키는 항목을 컬렉션에 포함했는지 확인할 수있는 더 나은 방법이 있습니까?)
감사 크리스 비교 직접 배열에 대해 작업과 수행의 장점을 가지고 PowerShell을의
-contains
연산자를 사용하는 것입니다! 이것은 확실히 올바른 방향으로 나를 잡았어. 근무 스크립트 $ S = @ (-Query "를 사용하여 DB GO 간부 Monitor_TEST_ps 'EXPORT_RUN', NULL, 20"' -ServerInstance "testdb002의 \의 testdb_002"-SQLCMD를 호출) 경우 ($의 | {? $ _ [ '상태'] - 예 '확인'}) { 쓰기 호스트 "만료 됨, FAIL." } else { 쓰기 호스트 "찾을 수 없음, 확인" } – xbnevan