Là một quản trị viên Unix và Windows, người thực hiện nhiều kịch bản Unix và hầu như không có kịch bản Windows, tôi nói rằng đó là một phần do sự lúng túng đáng kinh ngạc của các tiện ích và API kịch bản Windows, và khó khăn (có thể không rõ ràng một từ tốt hơn) về việc chạy mọi thứ từ xa trên máy Windows.
Ý tôi là, WTF là cái này?
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Một phần của vấn đề, tôi nghĩ, là có là một API. Trong Unix, quản trị viên chủ yếu viết kịch bản tự động hóa các tiện ích dòng lệnh mà họ đã sử dụng. Trong Windows, bạn phải sử dụng API không quen thuộc ở mọi cấp độ. Ví dụ, "mạo danh" nghĩa là gì? Đây là một khái niệm tầm thường đối với một quản trị viên Unix, người có khả năng sử dụng sudo và su và đã quen thuộc với các tập lệnh setuid. Nhưng một quản trị viên Windows dường như không quen thuộc với điều đó; họ có thể biết về "runas" (hoặc tùy chọn GUI tương đương), nhưng họ có nhiều khả năng đăng nhập với tư cách quản trị viên khi họ cần làm gì đó admin-y.
Và các tài liệu về kịch bản trong Windows là khốn khổ. Đối với một điều, đó là "ngôn ngữ được giải thích" hơn nhiều so với tập lệnh, một lần nữa bởi vì họ đang sử dụng API (không quen thuộc) và không phải là các lệnh mà họ đã quen thuộc. Nhưng tôi không nghĩ rằng tôi đã từng tìm thấy bất cứ điều gì hữu ích trong tài liệu của Microsoft mà không phải dẫn đến bằng cách tìm ai đó đã làm điều gì đó gần với những gì tôi muốn đã chỉ cho tôi đi đúng hướng. Không nơi nào có vẻ như có một danh sách những việc bạn có thể làm. Có vẻ như bạn đã phải làm quen với các phần bên trong Windows để làm những việc cơ bản nhất.
Không phải là các tập lệnh Unix thường không giống như nhiễu dòng. Nhưng một quản trị viên Unix có thể bắt đầu với một tập lệnh không làm gì ngoài việc chạy các lệnh đơn giản mà anh ta đã biết. ("Tôi luôn phải chạy ba lệnh này liên tiếp. Nếu tôi đặt chúng trong một tệp cùng nhau, tôi có thể thực hiện nó trong một lệnh!") Và sau đó anh ấy có thể tiến triển khi anh ấy cảm thấy thoải mái với tình huống này. Ngược lại, không có cách nào để quản trị viên viết kịch bản "đăng nhập vào máy chủ với tư cách quản trị viên, nhấp vào Bắt đầu → Cài đặt → Bảng điều khiển; nhấp đúp vào Hệ thống; nhấp vào tab Tên máy tính, v.v." Vâng, bất cứ điều gì anh ta cố gắng để có thể được trình bày thông qua API ở đâu đó, nhưng không có cách nào để anh ta dần dần tìm thấy điều đó.
Vì vậy, để trả lời câu hỏi "làm thế nào chúng ta có thể khiến quản trị viên Windows thực hiện nhiều kịch bản hơn?", Câu trả lời là, làm cho kịch bản bớt xa lạ hơn. Làm thế nào để làm điều đó, tôi không biết.
Thành thật mà nói, câu trả lời nằm trong tay Microsoft. Không có lý do gì mà họ không thể có tiện ích dòng lệnh để thực hiện mọi thứ được thực hiện thông qua GUI. (Hiện tại thực sự có rất nhiều trong số chúng, nhưng chúng không được quảng cáo, chúng được ghi chép kém và chúng không nhất quán.) nút đó thực sự làm. Có một chú giải công cụ hiển thị đối tượng API đang được sửa đổi. Hoặc ghi lại nó trong cửa sổ Trợ giúp.
Không có vấn đề gì trong việc bảo vệ người dùng khỏi nội bộ, nhưng Windows dường như không thể chủ động che giấu những nội bộ đó, ngay cả với những người muốn tìm thấy chúng.
ls -1 *old* | awk '{print "mv "$1" "$1}' | sed s/old/new/2 | sh