Ngôn ngữ kịch bản nào hữu ích cho tự động hóa Windows?
Ngôn ngữ kịch bản nào hữu ích cho tự động hóa Windows?
Câu trả lời:
Kể từ Windows 7 và Server 2008, việc cân nhắc PowerShell là hợp lý với Windows và cũng là cơ bản để quản trị phần mềm máy chủ như Lync và Exchange vì có toàn bộ các lệnh có sẵn cho chúng. Có một danh sách ngày càng nhiều các tính năng có sẵn, xem Trung tâm tập lệnh để biết chi tiết.
Windows Script Host (WSH) về mặt kỹ thuật là máy chủ lưu trữ kịch bản cho Công cụ tạo tập lệnh ActiveX. VBScript và JScript (triển khai JavaScript của Microsoft) là hai công cụ được cài đặt theo mặc định. Nhiều cái khác có sẵn như là nguồn mở, bao gồm Perl, PHP và Ruby.
Sử dụng cú pháp tương tự VB6 và VB.NET, VBScripts thiếu quyền truy cập dễ dàng vào các lớp .NET (Powershell được viết trên .NET để nó có quyền truy cập vào tất cả các chức năng .NET). VBScript chủ yếu tận dụng dịch vụ WMI và các đối tượng mà nó phơi bày.
Ví dụ: Điều này tạo ra một điểm Khôi phục.
Set wmi, whatName, errResults
wmi = GetObject("winmgmts:\\.\root\default:Systemrestore")
whatName = InputBox("Enter a name for the Restore Point",WScript.ScriptName)
errResults = wmi.CreateRestorePoint (whatName, 12, 100)
If errResults <> 0 then
Wscript.Echo "Error " & errResults & " : Unable to create Restore Point"
End If
Bạn cũng có thể viết cùng một tập lệnh bằng ECMAScript:
var wmi = WScript.GetObject("winmgmts:\\.\root\default:Systemrestore");
var whatName = WSHInputBox("Enter a name for the Restore Point",Script.ScriptName);
var errResults = wmi.CreateRestorePoint(whatName, 12, 100);
if(errResults != 0) {
WScript.Echo("Error "+ err + " : Unable to create Restore Point");
}
Tất nhiên là có Batch File tốt. Họ không cần giới thiệu.
Tôi vẫn viết các tệp bó DOS, ngay cả trong Windows 7. Đối với hầu hết các tác vụ, thao tác này vẫn hoạt động khá tốt và hoạt động rất đơn giản (cũng vậy, nhiều lệnh DOS như "FOR" đã được cải thiện theo thời gian và cung cấp nhiều hơn tùy chọn và chức năng không có sẵn hơn một thập kỷ trước).
Đối với tôi, một tệp bó DOS vẫn là ngôn ngữ kịch bản chính cho Windows (chắc chắn là truyền thống), nhưng mọi người đều có nhu cầu và sở thích khác nhau. Có rất nhiều điều mà các tệp bó DOS không thể làm được (ngôn ngữ kịch bản cũng có thể gây ra các hạn chế) và trong những trường hợp hiếm hoi tôi gặp phải điều này, sau đó tôi xem xét các tùy chọn khác của mình là gì (thường là Perl, hoặc đôi khi có thể được viết một chương trình nhỏ hoặc toàn bộ ứng dụng).
Hiểu những gì bạn cần thực hiện là một bước rất quan trọng trong việc quyết định sử dụng công cụ nào. Làm quen với các công cụ là một khía cạnh quan trọng khác có thể giới hạn các tùy chọn của bạn. Nếu bạn đang cố gắng quyết định nên học ngôn ngữ [hoặc lập trình] nào, thì hy vọng điều này sẽ hữu ích cho bạn.
cmd
thực sự là một điều quái dị, dễ dàng là ngôn ngữ kịch bản shell WORST mà tôi từng gặp điều không may khi sử dụng.
Điều đó phụ thuộc vào người bạn hỏi. Một số sẽ không bao giờ rời khỏi lô, một số tình yêu vbscript một số tình yêu sức mạnh, những người khác như AutoIt. Sau đó, có những nền tảng độc lập như Python và Perl mà một số người sẽ thề với mọi thứ.
Tôi cho rằng ngôn ngữ kịch bản chính thức của Wap cho Windows sẽ là (và đã có từ Win95) Windows Script Host .
Về mặt kỹ thuật, WSH không phải là một ngôn ngữ cho chính nó, mà là một môi trường (không phải GUI) phơi bày các giao diện COM để cho phép bạn sử dụng (hầu như) bất kỳ ngôn ngữ kịch bản nào bạn muốn, để thực hiện các điều hành OS, ngay cả những thứ không có cách riêng được tích hợp vào ngôn ngữ (ví dụ: Ruby không có cách tích hợp để đăng nhập vào Windows hoặc TCL / TK không có cách tích hợp để hiển thị hộp thoại Run).
Bạn có thể đã thấy một số tệp WSF có thể bao gồm nhiều ngôn ngữ trong một tệp, nhưng thông thường các tập lệnh WSH được viết bằng một ngôn ngữ và được phân phối với phần mở rộng tương ứng với phiên bản tập lệnh của ngôn ngữ đó (ví dụ: VBS cho các tập lệnh VisualBasic, PYS cho PythonScript, v.v. .)
Tôi sẽ nói AutoIt, nó cung cấp sự phát triển rất nhanh và dễ dàng trên các cửa sổ và rất chặt chẽ cùng với nó. Điều này có nghĩa là các tác vụ thường lấy khá nhiều mã trong các ngôn ngữ khác có thể được thực hiện theo đúng nghĩa đen một dòng trong tự động. Các tính năng như biên dịch trực tiếp vào exe cũng rất hữu ích.
Các ngôn ngữ khác được chỉ ra trong câu hỏi này (VbScript, PowerShell, Batch) rất phổ biến và được hỗ trợ. Nếu bạn đã biết một ngôn ngữ kịch bản và cảm thấy thoải mái với - bằng mọi cách hãy đi với điều đó.
Nếu bạn chuẩn bị đầu tư để chọn một ngôn ngữ mới, tôi sẽ đề xuất hai ngôn ngữ cho bạn, tùy thuộc vào công việc bạn đang cố gắng thực hiện:
JavaScript (thông qua WSH) - sử dụng JavaScript nếu bạn muốn sử dụng nhiều Đối tượng tự động hóa khác nhau bằng cách khởi tạo chúng và gọi vào Mô hình đối tượng của chúng. Bạn có thể tạo Đối tượng tự động hóa cho hầu hết mọi thứ, từ máy chủ Exchange đến WMI đến tài liệu Office. Có một hỗ trợ gỡ lỗi với Visual Studio (với đối số / x). Ngoài ra, một khoản đầu tư vào JavaScript sẽ chứng minh là hữu ích trong HTML.
Perl - sử dụng Perl nếu bạn có thể khởi chạy các chương trình khác, thao tác đầu ra của chúng, thực hiện biểu thức chính quy. Mặc dù có vẻ như ngôn ngữ này hiện đang suy giảm, nhưng nó vẫn là một ngôn ngữ rất phổ biến, được hỗ trợ rất tốt với một ngôn ngữ cộng đồng lớn. Bạn cũng nên xem xét ngôn ngữ này để liên lạc với các dịch vụ khác (không nhất thiết phải là Windows), chẳng hạn như JIRA trên doanh nghiệp hoặc EC2 trên Amazon. Gỡ lỗi được hỗ trợ trong nhật thực với EPIC, đây cũng là một môi trường IDE tốt (tô màu cú pháp, v.v.). Có các mô-đun trong CPAN cho tất cả mọi thứ. Kiến thức Perl sẽ chứng minh là hữu ích khi phải tự động hóa trên các máy không chạy Windows.
Trong những ngày đầu, có VBScript theo sau là Batch, trong môi trường công ty với Windows 7 và Server 2008 R2 thuần túy, ngôn ngữ kịch bản mới Powershell đang thu hút nhiều sự chú ý.
Tôi thứ hai đề xuất cho Perl, nếu bạn định viết một số tập lệnh Perl. Những người tôi làm việc cùng đã sử dụng thành công và đề xuất CLR Script (hơi cũ) và để tạo kịch bản tương tác web, iMacros
Nó có thể là hầu hết mọi thứ, tùy thuộc vào những gì bạn cố gắng tự động hóa. Nó sẽ thay đổi từ các tệp bó và PowerShell sang autohotkey và Selenium (nếu bạn cần tự động hóa một số tác vụ liên quan đến GUI).
Thông thường nó không phải là một vấn đề để tìm hiểu một, nếu bạn cần thêm một số sửa đổi hoặc hỗ trợ các tập lệnh đã được viết. Nếu bạn cần phát triển một cái gì đó mới - chọn ngôn ngữ / cách dựa trên yêu cầu và những gì bạn đã biết.