Tác vụ SYSTEM tìm hồ sơ VPN trong cuốn danh bạ điện thoại nào?
Một tác vụ chạy dưới một tài khoản nào đó, và hồ sơ VPN gốc là theo từng người dùng trừ khi được tạo cho tất cả người dùng. Hãy so sánh cả hai kho trước khi dựng lại bất cứ thứ gì.
Hồ sơ VPN của bạn nằm ngay trong Cài đặt, vậy mà tác vụ đã lên lịch vẫn báo không tìm thấy kết nối. Không có gì hỏng: kho VPN gốc của Windows là theo từng người dùng trừ khi hồ sơ được tạo cho tất cả người dùng, và tác vụ chạy dưới tài khoản mà principal của nó nêu tên. Thông thường tác vụ đọc một cuốn danh bạ điện thoại chưa từng chứa hồ sơ của bạn. Hai lệnh và một thiết lập tác vụ là đủ để chứng minh điều đó, và đáng để chạy trước khi ai đó dựng lại kết nối.
Hai kho lưu cùng một tên hồ sơ
Một hồ sơ VPN gốc của Windows sống trong kho của tài khoản đã tạo ra nó. Kho toàn cục là một cuốn danh bạ khác, chỉ được điền khi hồ sơ được tạo bằng công tắc cho tất cả người dùng trong một phiên nâng cao. Cả hai đều có thể lưu một hồ sơ cùng tên, và không kho nào là góc nhìn của kho kia.
Đọc cả hai kho từ cùng một phiên và so sánh các tên chúng trả về. Công tắc chọn kho toàn cục, và việc đọc nó thường cần một phiên nâng cao:
Get-VpnConnection | Select-Object Name, ServerAddress, TunnelType
Get-VpnConnection -AllUserConnection | Select-Object Name, ServerAddress, TunnelType
Nếu lệnh thứ nhất liệt kê hồ sơ và lệnh thứ hai thì không, không thay đổi thông tin đăng nhập nào giúp được một tác vụ chạy dưới tài khoản khác, vì vấn đề là tư cách thành viên chứ không phải xác thực. Nếu cả hai đều liệt kê, kho không phải nguyên nhân và phần tiếp theo được áp dụng. Chính phép so sánh đó đóng lại một nửa số phiếu này. Ghi lại kho nào đã trả lời và bạn đã chạy kiểm tra dưới tài khoản nào, vì câu trả lời vô nghĩa nếu thiếu cả hai sự kiện.
Đọc principal của tác vụ trước thông tin đăng nhập
Mở tác vụ và đọc principal, vì nó cho biết tác vụ nhìn thấy kho nào. Một tác vụ được đặt chạy như SYSTEM không phải là tài khoản của bạn có thêm quyền: nó có hồ sơ riêng và không có quyền truy cập cuốn danh bạ theo từng người dùng mà bạn đã tạo khi đăng nhập. Tài khoản dịch vụ cũng cư xử hệt như vậy.
Tùy chọn chạy bất kể bạn có đăng nhập hay không cũng thay đổi điều này, vì khi đó tác vụ không có phiên tương tác nào để mượn thông tin đăng nhập. Hãy để hành động ghi whoami vào một tệp và đọc câu trả lời thay vì giả định nó.
Chẩn đoán từ terminal của chính bạn không nói gì về vấn đề này, vì nó cho thấy những gì tài khoản của bạn nhìn thấy. Chạy phép so sánh dưới danh tính của tác vụ thông qua bất kỳ quy trình đã được phê duyệt nào bạn có cho việc đó. Kết quả dán từ bảng điều khiển quản trị là một tập dữ liệu khác, không phải một tập có đặc quyền hơn. Nếu không có quy trình như vậy, tác vụ phải tự ghi lại câu trả lời, điều mà phần cuối cùng thiết lập.
Tìm thấy hồ sơ không phải là đăng nhập
Một hồ sơ cho tất cả người dùng làm cho cấu hình hiển thị rộng hơn. Nó không mang mật khẩu đã lưu từ tài khoản đã tạo ra nó, và nó không trao cho tài khoản khác khóa riêng được lưu trong hồ sơ người dùng của bạn. Khả năng hiển thị và thông tin đăng nhập dùng được là hai bài kiểm tra riêng biệt, và vượt qua bài đầu không nói gì về bài sau.
Nếu tác vụ giờ tìm thấy hồ sơ và thất bại khi xác thực, đó là tiến bộ và giai đoạn đó thuộc về bản ghi. Hãy chuyển chứng chỉ sang kho máy, hoặc cung cấp bí mật qua cơ chế riêng của việc triển khai, thay vì tạo lại tên kết nối lần nữa. Tạo lại nó cho ra cùng thất bại với dấu thời gian mới hơn. Microsoft ghi lại hai phạm vi mà công tắc của cmdlet chọn giữa chúng.
Các thách thức không tương tác là cái bẫy đằng sau giai đoạn đó. Lời nhắc PIN hoặc mã dùng một lần không thể được trả lời bởi một tác vụ không có màn hình nền, nên một hồ sơ quay số hoàn hảo bằng tay có thể không dùng được dưới tự động hóa.
Bốn trường mà bản ghi tác vụ cần
Hãy giữ các giá trị quyết định kết quả cùng nhau ở một nơi, vì ba trong số chúng thường bị bỏ ngỏ. Bản ghi cần bốn dòng:
- Đường dẫn hành động: tập lệnh hoặc tệp thực thi mà tác vụ chạy, không phải lối tắt được giải quyết khác đi cho tài khoản khác.
- Tên hồ sơ: chuỗi chính xác, vì hai kho có thể lưu cùng một tên trỏ đến các máy chủ khác nhau.
- Principal: tài khoản mà tác vụ chạy dưới đó, và liệu nó có phiên tương tác hay không.
- Phương thức xác thực: điều mà principal đó thực sự có thể hoàn thành, ví dụ chứng chỉ từ kho máy thay vì khóa trong hồ sơ người dùng của bạn.
Bốn dòng đó trả lời câu hỏi mà phiếu thực sự đặt ra, tức là tự động hóa đã dùng cấu hình nào. Chúng cũng tồn tại qua lần dựng lại tác vụ tiếp theo, khi tác giả gốc không có mặt để giải thích vì sao cái tên lại quan trọng. Không có chúng, cùng thất bại đó quay lại sau lần triển khai tiếp theo và lại tốn đúng số giờ ấy.
Xác định giai đoạn mà tác vụ đã đạt tới
Hãy đo hành động thay vì đoán từ kết quả lần chạy cuối. Một trình bao ngắn ghi lại danh tính, kho mà nó có thể thấy và kết quả quay số ở một nơi:
whoami
Get-VpnConnection -AllUserConnection | Select-Object Name, ServerAddress
rasdial "Office"
schtasks /query /tn "VPN Connect" /v /fo LIST
Lệnh quay số in ra lỗi của chính nó, thường rõ hơn một lỗi tác vụ chung. Truy vấn trả về principal và mã kết quả cuối cùng cạnh nhau, nên danh tính và kết quả hiển thị trong một khung nhìn. Hai sự kiện đó quyết định bước tiếp theo là thay đổi kho hay thay đổi thông tin đăng nhập.
Cuối cùng, hãy tách một tác vụ kết nối sau khi người dùng đăng nhập khỏi một đường hầm thiết bị hoặc quy trình làm việc trước đăng nhập được hỗ trợ. Chia sẻ một hồ sơ không phải là thiết kế cho cả hai, và trường principal là thứ cho bạn biết bạn đã dựng trường hợp nào trong ba trường hợp. Nếu kết nối phải tồn tại trước khi đăng nhập, kho hồ sơ theo từng người dùng là lớp sai cần sửa.