도메인의 모든 컴퓨터 목록을 가져온 다음 Get-Printer를 실행하여 설치된 모든 프린터 목록을 가져 오는 짧은 스크립트를 작성하려고합니다. 각 기계에. 내가 Powershell 4 파이핑 및 Get-Printer 상호 작용
net view | ForEach-Object {Get-Printer -ComputerName $_}
을 시도 있도록
내가 "NET VIEW"를 사용하고자하는 도메인에있는 컴퓨터의 목록을 얻으려면하지만 그것은 작동하지 않습니다. 대신 나는 네트 뷰에서 각 PC에 대해 "스풀러 서비스가 도달 할 수 없습니다"라는 줄을 얻습니다.
"Get-Printer"에 수동으로 PC 이름을 입력하면 텍스트에서 PC 이름을 검색 한 후 .txt 파일에 net view의 결과를 출력하는 작업 스크립트를 실제로 작성한 다음 각 줄을 읽습니다 텍스트 파일에서 "Get-Printer"로 순차적으로 입력합니다. 하지만이 코드를 확장하여 프린터를 중앙 집중식으로 관리 할 수 있기를 바란다. 그래서이 작업을 한 줄에서 처리 할 필요가 있다고 생각한다.
누구나 내가 여기에없는 것을 설명 할 수 있습니까? ForEach는 Powershell 4에서 실제로 어떻게 작동합니까?
$PCs = net view /all | Select-String "\\"
$a = ForEach ($Line in $PCs)
{ $Line -Replace(" ","")
}
$a | Out-file -FilePath C:\Users\esmith\Desktop\test.txt -Encoding ascii
Get-content C:\Users\esmith\Desktop\test.txt | ForEach-Object {Get-Printer -cn $_} | Out-file -FilePath C:\Users\esmith\Desktop\output.txt
아 많은 이해 왜 내 해결 방법이 효과적 이었는지 설명합니다. 그러나 나는 새로운 문제가있다. 프린터 스풀러 서비스를 실행하지 않고 컴퓨터에 충돌 할 때까지 코드 실행이 성공한 것 같습니다. 그런 다음 무기한 중단됩니다. 해당 쿼리에 시간 초과를 추가하고 목록의 다음 PC로 이동할 수있는 방법이 있습니까? Get-AdComputer가 스풀러 서비스를 실행하지 않는 많은 네트워크 뷰를 포함하여 net 뷰보다 훨씬 더 많은 장치 목록을 반환하기 때문에이 코드는 내 운동 코드와 관련이 없습니다. – evansmtihc
Get-Printer가 시간 초과 매개 변수를 지원하지 않는 것 같습니다. 합리적인 시간 제한 값이 내장되어 있기를 기대합니다. 결코 돌아 오지 않거나 오래 걸릴 것이라고 확신합니까? 두 번째 예제를 사용하는 경우 Get-Printer는 동시에 여러 번 호출 할 수 있습니다. –