때 사람들은 탐구하는 사업자용 PowerShell(는 데 도움세요)그들은 자주 실행에서 두 개의 비슷한 듯하지만,전혀 다른,사업자는과 혼동해서는 그들.
I’ll 수시 누군가가 이것을 보십시오:
if ($string -contains '*win*') { }
그는지 확인하기 위해 노력하고$문자열이 포함되자 승”,”그러나 불행하게도 그 무엇을 포함하지 않는다. 그들이 정말로 사용하고자하는 것은-와 같은 연산자입니다:
if($string-like’*win*’){}
당신이 큰 소리로 말할 때 멋지게 읽지 않는다는 것을 알고 있습니다. 좀 밸리 소녀 소리,나는 가정한다. “만약,이 변수라면,이 와일드카드,오미고드,정말?”하지만-같은이 작업에 대한 올바른 연산자입니다.
-contains 연산자는 조금 까다 롭습니다. 객체 모음이 특정 객체를 포함(‘포함’)하는지를 알려주기 위해 고안되었습니다. 자,당신의 객체 모음이 문자열의 무리라면,이것은 꽤 간단합니다.
$coll = "one','two','three','four'if ($coll -contains 'one') { }
컬렉션에 복잡한 객체가 포함되어 있으면 더 어려워집니다. 이 작동하지 않을 것처럼 생각할 수 있습니다.
$coll=Get-서비스
경우($coll-담’BITS’){}
variable$coll 지 않는 문자열이 포함되어 있”BITS;”무엇을 포함하는 서비스의 개체 이 숙박 시설은 비트입니다. 전체 객체를 비교하기 때문에이 방식으로 실제로 사용할 수 없습니다. 예를 들어:
#모든 프로세스를
$프=얻을 처
#얻을 하나의 프로세스
$proc=얻을 수정|선택-1
#확인
$발동을 포함하$proc
이것은 거의 항상 거짓입니다. 두 번째 명령을 실행하는 데 걸리는 시간에 첫 번째 프로세스가 변경 되었기 때문입니다. 메모리,CPU,또는 다른 값이 변경되었습니다. $Procs 는$proc 와 동일한 실제 프로세스를 포함하지만 모든 단일 속성이 두 인스턴스에서 정확히 동일하지는 않습니다. 그래서-contains 는 일치를 감지 할 수 없습니다.
“Top Ten PowerShell 성가심에 대해 자세히 알아보십시오.”
이 기사에 대해 질문하고 싶습니까? 나는http://powershell.com/cs/forums/230.aspx에서 대답 할 것이다!