Tôi có một yêu cầu để chạy một tập lệnh bó mỗi lần tắt hệ thống, bất kể máy tính có được kết nối với mạng hay không. (Không quan trọng đối với câu hỏi, nhưng tập lệnh trong câu hỏi sẽ xóa hàng đợi in của máy.
Tuy nhiên, tôi không thể chạy tập lệnh này khi PC ngoại tuyến khỏi mạng, khi tôi sử dụng phương pháp này bên dưới.
Tôi cũng có thể thêm rằng PC đang được đề cập đang chạy Windows 10 Pro x64 (phiên bản 1809). Bộ điều khiển miền đang chạy Windows Server 2008 R2 và đây cũng là nơi tôi đã chạy gpedit.msc
.
Những gì tôi đã làm cho đến nay:
- Tạo Đối tượng chính sách nhóm Active Directory với tập lệnh tắt máy.
- Đã thêm tập lệnh vào thư mục GPO trên SYSVOL .
- Xác nhận rằng GPO này thực sự được tải xuống đĩa cứng của máy trạm đang được đề cập và do đó nên có thể truy cập ngoại tuyến.
- Các đường dẫn được chỉ định trong GPO là tương đối, không tuyệt đối.
Điều tôi muốn xảy ra:
- Khi PC bị tắt,
ClearPrintQueue.bat
tập lệnh được chạy bất kể PC hiện có kết nối mạng hay không.
Điều gì thực sự xảy ra:
- Khi PC bị tắt,
ClearPrintQueue.bat
tập lệnh chỉ chạy nếu PC hiện có thể đạt được chia sẻ SYSVOL qua mạng.
Chi tiết:
Những gì tôi đã làm là tạo Đối tượng chính sách nhóm trong miền và liên kết nó với OU thử nghiệm có chứa máy đang được đề cập đến.
Tôi đã chỉnh sửa GPO và điều hướng đến Cấu hình máy tính -> Chính sách -> Cài đặt Windows -> Tập lệnh (Khởi động / Tắt máy) -> Tắt máy
Các thuộc tính tắt máy như dưới đây:
Khi nhấp vào Show Files ... trình thám hiểm mở ra để hiển thị thư mục\\example.com\SysVol\example.com\Policies\{1B61F884-9D14-4065-8265-F04FFDE41683}\Machine\Scripts\Shutdown
Nội dung của thư mục này và tệp ClearPrintQueue.bat như sau:
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:\>
Khi điều tra một PC cục bộ, tôi có thể thấy rằng tập lệnh thực sự được sao chép vào cửa hàng GPO cục bộ của PC: s:
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:\>
Điều tra vào scripts.ini
và ClearPrintQueue.bat
trên đĩa cục bộ của máy tính, chúng ta thấy:
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:\>
Tức là máy tính có mọi thứ nó cần để thực sự chạy tập lệnh tắt mà không cần truy cập mạng. Tuy nhiên, tôi đã quan sát thấy rằng tập lệnh dường như không chạy khi thiếu kết nối mạng.
Nghiên cứu sâu hơn bằng cách sử dụng gói chụp và WireShark dường như chứng minh rằng PC thực tế đã kéo tập lệnh xuống khỏi chia sẻ SYSVOL (tại sao! Nó ở ngay trên đĩa ...) Dấu thời gian tương ứng với khi máy tính bị tắt .
Cách giải quyết có thể:
Một cách giải quyết khác có thể mà tôi chưa thử nghiệm liên quan đến việc chỉ định thủ công đường dẫn tuyệt đối của tập lệnh C:\Windows\System32\GroupPolicy\DataStore\0\SysVol\example.com\Policies\{1B61F884-9D14-4065-8265-F04FFDE41683}\Machine\Scripts\Shutdown\ClearPrintQueue.bat
thay vì chỉ xác định ClearPrintQueue.bat
là đường dẫn tương đối. Mặc dù điều này có vẻ rất khó khăn và dường như nó không hoạt động như thế nào. Trước khi tôi đi xuống tuyến đường đó, tôi muốn xem liệu có ai có ý tưởng hay hơn không.
Tại sao tôi thậm chí đang cố gắng làm điều này:
Tôi có những người dùng di động thích vô tình in sai máy in và những người này sau đó được xếp hàng cục bộ trên mỗi máy trạm và sau đó khi PC được kết nối với trang web có máy in đó, một tờ giấy ra khỏi máy in. Phần mềm VPN được chạy ở cấp độ "người dùng" và do đó, phần mềm VPN có thể không chạy khi đến lúc tắt máy.
Tôi đang cố gắng giảm thiểu điều này bằng cách xóa hàng đợi in khi tắt máy, để các công việc in cổ không ngồi trong hàng đợi mãi mãi.
start -> run -> gpedit.msc
?