0
나는 객체의 배열, 컴퓨터 목록을, 그래서 배열은 다음과 같이 보입니다 :요소 ID
나는이과 오프라인이 어떤을 반복 할 필요가+----------+-----------+---------------+
| size(MB) | Computer | Location |
+----------+-----------+---------------+
| 100 | compname1 | C:\Users\etc\ |
| Offline | compname2 | Offline |
| 30 | compname3 | C:\users\etc2 |
+----------+-----------+---------------+
, 스캔 다시. 내가 가진 문제는 루프의 각 반복에서 배열의 현재 객체의 요소 번호를 찾는 방법입니다.
내가했다 : 값을 반환했지만 정확하지 않는 것$element = [array]::IndexOf($complist.computer,$compname)
는 (반환 된 요소가 올바른 배열 요소와 일치하지 않습니다).
마지막 게임은 '오프라인'으로 표시된 컴퓨터의 배열을 실행하고 해당 컴퓨터에서 검색을 실행 한 다음 배열의 요소를 새 데이터로 바꿔야한다는 것입니다.
스크립트에서 논리를 변경하고 $ i ++로 모든 요소를 증가시키고 그 번호를 요소 ID로 사용하는 것으로 끝났습니다. 그래도 질문에 대한 답변을 얻는 것이 좋을 것입니다. – mhouston100
PowerShell에서 다르게 다룰 것입니다. 당신이 정말로하고 싶은 것은 '온라인'컴퓨터를 목록에 유지하고 목록에있는 '오프라인'컴퓨터의 데이터를 대체하는 것입니다. 기존 배열을 변경하는 대신 다음과 비슷한 일을 할 수 있습니다 :'$ data | Foreach {if ($ _. 위치 -eq "오프라인") {Write-Output (Get-ComputerDetails -ComputerName $ _. 컴퓨터)} else {Write-Output $ _}} ' –
문제는 1 : 1 교체. 예를 들어, PC가 오프라인이면 하나의 레코드가 있습니다. 그러나 그것이 스캔되면 여러 사용자가있을 수 있으므로 CSV에 1, 2, 3 .... 레코드가있을 수 있습니다. 그것이 CSV가되어야하는 이유는 내가 그것을 보낼 때 사람이 읽을 수 있어야한다는 것입니다. – mhouston100