좋아,이 스크립트를 작동 시키려고하고 있고 계속해서 동일한 컴퓨터를 반복해서 실행하지 못하고 작동하는데 문제가 있습니다. 나는 이것이 최선의 방법이라고 생각하지 않으며 만약 당신이 제안을 해주시면 감사하겠습니다. 어쨌든 6 행의 "IF (! $ Succssful.Contains ($ Computer)) {"이 문제는 아니지만 나에게 오류가 발생하지는 않지만 대신 스크립트는 끝납니다. 나는 "!" 그러나 내가 예상했던 것에 따라 어떤 운도.Powershell 문자열에 대한 .contains 함수와 관련된 문제
$Computers = "TrinityTechCorp"
$HotFixes = Get-Content HotFixes.csv
While ($Successful -AND $Successful.count -ne $Computers.count) {
ForEach ($Computer in $Computers) {
IF (!$Succssful.Contains($Computer)) {
If (Test-Connection $Computer) {
$Comparison = get-hotfix -ComputerName $Computer | Select -expand HotFixID
ForEach ($HotFix in $HotFixes) {
IF ($Comparison -NotLike "*$HotFix*") {
Write-Host "$Computer missing $HotFix"
}
$Successful += $Computer
}
}
}
}
}
이 컴퓨터를 실행할 컴퓨터가 많은 경우 Invoke-Command를 포함하여 모든 컴퓨터에서 병렬로 실행하는 것이 좋습니다. hotfix.csv를 공용 네트워크 공유에 저장해야합니다. Invoke-Command -Computername test1, test2 -ScriptBlock {your script}는 모든 출력 호스트 메시지를 단일 출력으로 반환하여 파일에 저장할 수 있습니다. –
btw. while ($ successful)은 ..입니다. string []이 성공적이지 않습니다. 또한 컴퓨터리스트가 성공한 것이기 때문에 핫픽스 루프 밖에서'$ successful + = $ computer'를 옮기고 싶을 것입니다. (step out에서) 이제 각 핫픽스 테스트에 컴퓨터 이름이 추가 되었기 때문입니다 –
여기서'$ 성공적으로 정의 된? 우리가 당신 스크립트 중 일부를 놓친 것 같아요. –