컴퓨터가 네트워크에 연결되어 있는지 여부에 관계없이 시스템을 종료 할 때마다 배치 스크립트를 실행해야합니다. (질문은 중요하지 않지만 문제의 스크립트는 기기의 인쇄 대기열을 지 웁니다.
그러나 아래 의이 방법을 사용할 때 PC가 네트워크에서 오프라인 상태 일 때이 스크립트를 실행할 수 없습니다.
또한 해당 PC에서 Windows 10 Pro x64 (버전 1809)를 실행하고 있다고 덧붙일 수도 있습니다. 도메인 컨트롤러는 Windows Server 2008 R2를 실행 중이며 여기에서도 실행 gpedit.msc
됩니다.
내가 지금까지 한 일 :
- 컴퓨터 종료 스크립트를 사용 하여 Active Directory 그룹 정책 개체 를 만들었습니다 .
- SYSVOL 의 GPO 폴더에 스크립트를 추가했습니다 .
- 이 GPO가 실제로 해당 워크 스테이션의 하드 디스크로 다운로드되어 오프라인에서 액세스 할 수 있는지 확인했습니다.
- GPO에 지정된 경로는 절대 경로가 아니라 상대 경로입니다.
내가하고 싶은 일 :
- PC가 종료되면 PC가
ClearPrintQueue.bat
현재 네트워크에 연결되어 있는지 여부에 관계없이 스크립트가 실행됩니다.
실제로 일어나는 일 :
- PC가 종료
ClearPrintQueue.bat
되면 PC가 현재 네트워크를 통해 SYSVOL 공유에 도달 할 수있는 경우에만 스크립트가 실행됩니다 .
세부:
내가 한 것은 도메인에서 그룹 정책 개체 를 만들고 해당 컴퓨터가 포함 된 테스트 OU에 연결하는 것입니다.
GPO를 편집하고 컴퓨터 구성 -> 정책 -> Windows 설정 -> 스크립트 (시작 / 종료) -> 종료로 이동했습니다.
종료 속성 아래 당과 같음 :
파일 표시 ...를 클릭하면 탐색기가 열리고 폴더가 나타납니다.\\example.com\SysVol\example.com\Policies\{1B61F884-9D14-4065-8265-F04FFDE41683}\Machine\Scripts\Shutdown
이 폴더의 내용과 ClearPrintQueue.bat 파일은 다음과 같습니다.
PS C:\> Get-ChildItem "\\example.com\SysVol\example.com\Policies\{1B61F884-9D14-4065-8265-F04FFDE41683}\Machine\Scripts\Shutdown"
Directory: \\example.com\SysVol\example.com\Policies\{1B61F884-9D14-4065-8265-F04FFDE41683}\Machine\Scripts\Shutdown
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019-04-23 15:00 71 ClearPrintQueue.bat
PS C:\> Get-Content "\\example.com\SysVol\example.com\Policies\{1B61F884-9D14-4065-8265-F04FFDE41683}\Machine\Scripts\Shutdown\ClearPrintQueue.bat"
net stop spooler
del %systemroot%\System32\spool\printers\* /Q /F /S
PS C:\>
로컬 PC를 조사 할 때 스크립트가 PC :의 로컬 GPO 저장소에 실제로 복사되어 있음을 알 수 있습니다.
PS C:\> Get-ChildItem -Recurse -Force -File "C:\Windows\System32\GroupPolicy\DataStore\0\SysVol\example.com\Policies\{1B61F884-9D14-4065-8265-F04FFDE41683}"
Directory: C:\Windows\System32\GroupPolicy\DataStore\0\SysVol\example.com\Policies\{1B61F884-9D14-4065-8265-F04FFDE41683}
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019-04-23 15:00 59 gpt.ini
Directory: C:\Windows\System32\GroupPolicy\DataStore\0\SysVol\example.com\Policies\{1B61F884-9D14-4065-8265-F04FFDE41683}\Machine\Scripts
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a-h-- 2019-04-23 15:00 118 scripts.ini
Directory: C:\Windows\System32\GroupPolicy\DataStore\0\SysVol\example.com\Policies\{1B61F884-9D14-4065-8265-F04FFDE41683}\Machine\Scripts\Shutdown
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019-04-23 15:00 71 ClearPrintQueue.bat
PS C:\>
우리가 찾은 PC의 로컬 디스크에 대한 조사 scripts.ini
및 조사 ClearPrintQueue.bat
:
PS C:\> Get-Content "C:\Windows\System32\GroupPolicy\DataStore\0\SysVol\example.com\Policies\{1B61F884-9D14-4065-8265-F04FFDE41683}\Machine\Scripts\scripts.ini"
[Shutdown]
0CmdLine=ClearPrintQueue.bat
0Parameters=
PS C:\> Get-Content "C:\Windows\System32\GroupPolicy\DataStore\0\SysVol\example.com\Policies\{1B61F884-9D14-4065-8265-F04FFDE41683}\Machine\Scripts\Shutdown\ClearPrintQueue.bat"
net stop spooler
del %systemroot%\System32\spool\printers\* /Q /F /S
PS C:\>
즉, 컴퓨터에는 네트워크에 연결하지 않고 실제로 종료 스크립트를 실행하는 데 필요한 모든 것이 있습니다. 그러나 네트워크 연결이 끊어지면 스크립트가 실행되지 않는 것으로 나타났습니다.
패킷 캡처와 WireShark를 사용한 추가 조사 는 PC가 실제로 SYSVOL 공유에서 스크립트를 가져 오는 것을 입증하는 것으로 보입니다 (이유는 디스크에 있습니다 ...) 타임 스탬프는 컴퓨터가 종료되었을 때와 일치합니다 .
가능한 해결 방법 :
내가 아직 테스트하지 않은 한 가지 가능한 해결 방법 은 상대 경로로 C:\Windows\System32\GroupPolicy\DataStore\0\SysVol\example.com\Policies\{1B61F884-9D14-4065-8265-F04FFDE41683}\Machine\Scripts\Shutdown\ClearPrintQueue.bat
지정하는 대신 스크립트의 절대 경로를 수동으로 지정하는 것 ClearPrintQueue.bat
입니다. 이것은 매우 해키처럼 보이지만 작동하는 것이 "의미"하는 것처럼 보이지는 않습니다. 그 길을 가기 전에 다른 사람이 더 나은 아이디어를 가지고 있는지 알고 싶습니다.
왜 내가 이것을하려고합니까?
실수로 잘못된 프린터로 인쇄하려는 모바일 사용자가 있으며 각 워크 스테이션에서 로컬로 대기 한 다음 PC가 해당 프린터가있는 사이트에 연결되면 많은 양의 용지가 프린터에서 나옵니다. VPN 소프트웨어는 "사용자"수준에서 실행되므로 종료 할 때 VPN 소프트웨어가 실행되지 않을 수 있습니다.
종료시 인쇄 대기열을 삭제하여 고대 인쇄 작업이 대기열에 영원히 저장되지 않도록하여이를 완화하려고합니다.
start -> run -> gpedit.msc
?