나는 문장과 변수 안에있는 코드 블록에 관해 간단한 질문을한다. 내 스크립트는 사용자 입력을 수집하고 나중에 powershell 문에서 사용할 수있는 문자열을 만듭니다. Powershell - 변수로 코드 블럭 바꾸기
$filter = @()
While ($filter[-1] -ne "end") {
$filter += read-host 'Type the name of an OU you want to filter or type "end" to start the script'
if ($filter[-1] -eq "end") {
break
}
$strFilter += "`$_`.DistinguishedName -notlike `"*" + $filter[-1] + "*`" "
$strFilter += "-and "
}
$strFilter = $strFilter.SubString(0,$strFilter.length-5)
는 기본적으로 사용자는 그러나 많은 단어를 입력하며, 그 단어는 문자열
"$_.DistinguishedName -notlike "*<WORD>*""
에 추가됩니다 마지막 단어가 입력 될 때까지
-and
과 함께 던져.
이 부분은 제대로 작동하지만이 생성 된 문자열을 사용하여 작동하지 않는 정보를 수집합니다. 나는 그것이 매우 간단하다는 느낌을 가지고 있습니다. 예를 들어
:
는$computers = get-adcomputer -Filter 'ObjectClass -eq "Computer"' -properties "OperatingSystem","CanonicalName","Description"
$filteredComputers = $computers | where-object { $strFilter }
$ filteredComputers 내 문자열 변수로 어디 객체 문이 아무것도 안하고 있다고 생각하는 날 리드 $ 컴퓨터와 동일한 결과를 반환합니다.
감사합니다. 감사합니다.
'($ strFilter | Where {$ dn-like $ _}). Count -eq 0'은 모든 것을 거짓으로 표시하는 것 같습니다. "Domain Controllers"의 입력 문자열은 도메인 컨트롤러 OU에 속하지 않아도 여전히 false를 반환합니다. 0 경기가 있기 때문에 사실이 아니어야합니까? 아마도 내가 뭔가를 잘못 해석하고있는 것일까 요? – smierdziel
즉,'$ strFilter'에있는 필터 용어 중 하나와 일치하는 것을 찾습니다.'$ strFilter'의 내용은 무엇입니까? 어쩌면 당신은 거기에 필터 용어를 사용해서는 안됩니다 - 아마'**'일까요? –
'**'가 일치하고 있다고 생각지 않습니다. 인스턴스를 배열로 모으는 첫 번째 while 루프에서 enter 키를 누른 다음'**'가 나오면 보통 이것을 확인합니다 내 결과를 필터링하려고합니다. 위의 예제를 복사하여 복사하면 foo가 반환되지 않습니다. – smierdziel