Jakie języki skryptowe są przydatne w systemie Windows? [Zamknięte]


48

Jakie języki skryptowe są przydatne do automatyzacji systemu Windows?


10
Dałem +1, ponieważ widzę interesujące pytanie czające się za tym, co napisałeś. W tej chwili myślę, że „main” to niefortunny wybór słów, które należy edytować, aby uczynić mniej niejasnym. Być może „najczęściej używane”, „najlepiej obsługiwane” lub „zalecane”, w zależności od tego, co masz na myśli. Witamy w SuperUser! :)
Brennan Vincent

2
@Brennan Vincent: To świetna sugestia, ale zmiana słowa „główny” w tym momencie może odwrócić uwagę od ducha odpowiedzi. Myślę, że twój komentarz mówi wiele na ten temat i że lepiej pozostawić to pytanie. (Nawiasem mówiąc, +1 za to.)
Randolf Richardson,

1
W tej chwili myślę, że to pytanie należy do subiektywnej kategorii. Jednak z niewielką modyfikacją sformułowania, jak sugeruje Brennan, myślę, że może to być całkiem interesujący wpis na wiki społeczności.
Joe Taylor,

1
Wygląda również subiektywnie. W przypadku języków skryptowych określenie „główny”, „najlepszy” lub „preferowany” różni się w zależności od konkretnego zadania do wykonania oraz umiejętności i doświadczenia danej osoby.
Iszi

3
Rozumiem pytanie: jaki jest dziś natywny język skryptowy dla systemu Windows ?, tj. Jaki język skryptowy ma wbudowane zaczepy i funkcje w systemie operacyjnym, a nie wymaga interfejsów API, ActiveX itp., Aby załatwić sprawę?
Synetech

Odpowiedzi:


36
  1. PowerShell
  2. Host skryptów Windows
    a. VBScript
    b. JScript
  3. Pliki wsadowe

PowerShell (v2.0)

Począwszy od systemów Windows 7 i Server 2008, rozsądne jest rozważenie programu PowerShell w wersji dostarczanej z systemem Windows, a także fundamentalne jest administrowanie oprogramowaniem serwera, takim jak Lync i Exchange, ponieważ dostępny jest dla nich cały zestaw poleceń. Dostępna jest rosnąca lista funkcji, szczegółowe informacje można znaleźć w Centrum skryptów .

Host skryptów Windows

Windows Script Host (WSH) jest technicznie hostem skryptów dla silników skryptowych ActiveX. VBScript i JScript (implementacja JavaScriptu przez Microsoft) to dwa silniki instalowane domyślnie. Wiele innych jest dostępnych jako open source, w tym Perl, PHP i Ruby.

VBScript

Używając podobnej składni jak VB6 i VB.NET, skrypty VBScript nie mają łatwego dostępu do klas .NET (Powershell jest napisany w .NET, więc ma dostęp do wszystkich funkcji .NET). VBScript w większości korzysta z usługi WMI i obiektów, które udostępnia.

Przykład: tworzy punkt przywracania.

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

JScript

Możesz także napisać ten sam skrypt za pomocą 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");
}

Pliki wsadowe poleceń

Jest oczywiście dobry stary plik wsadowy. Nie potrzebują wstępu.


7
Jeśli chodzi o Windows 7 i Server 2008, byłby to Powershell 2.0
pokaz

@sshow zgadza się na temat bycia konkretnym na temat 2.0
Nick Josevski

„Nie potrzebują wstępu”. Ale nie potrzebujemy Extrò ...
Glenn Jackman

16

Nadal piszę pliki wsadowe DOS, nawet w systemie Windows 7. W przypadku większości zadań nadal działa to całkiem dobrze i jest bardzo proste w obsłudze (również wiele poleceń DOS, takich jak „FOR”, zostało z czasem ulepszonych i zapewnia więcej opcje i funkcje, które nie były dostępne ponad dziesięć lat temu).

Dla mnie plik wsadowy DOS jest nadal głównym językiem skryptowym dla Windows (z pewnością jest tradycyjny), ale każdy ma inne potrzeby i preferencje. Jest wiele rzeczy, których pliki wsadowe DOS nie mogą zrobić (języki skryptowe również mogą stanowić ograniczenia), a na rzadkie okazje, w których się z tym spotkałem, sprawdzam, jakie są moje inne opcje (często jest to Perl, a czasem może napisać mały program lub całą aplikację).

Zrozumienie, co należy osiągnąć, jest bardzo ważnym krokiem przy podejmowaniu decyzji, których narzędzi użyć. Znajomość narzędzi to kolejny ważny aspekt, który może ograniczyć twoje możliwości. Jeśli próbujesz zdecydować, którego języka skryptowego [lub programowania] się uczyć, mam nadzieję, że będzie to pomocne.


10
Jeśli przez „główny” język skryptowy masz na myśli „najstarszy i najczęściej używany”, jest to zdecydowanie właściwa odpowiedź. Jednak cmdnaprawdę jest to potworność, łatwo WORST język skryptowy powłoki, którego kiedykolwiek miałem nieszczęście użyć.
JSB

3
Ja również używam plików wsadowych, gdy skrypt musi być używany w innych wersjach systemu Windows. Jeśli masz do czynienia tylko z Win7 / Server 2008, to PowerShell jest najlepszym rozwiązaniem.
jtreser

5
+1 Wiem, że MS chce, aby to był PowerShell , ale na razie, jeśli chcesz wysłać komuś skrypt z systemem „Windows”, musisz wysłać mu plik wsadowy DOS. PS jest świetny dla niektórych wersji systemu Windows do niektórych zadań i ujawnia wiele mocy, ale pliki wsadowe są uniwersalne.
Alan Jackson

W niektórych firmach, np. W banku, w którym obecnie pracuję, polityka wykonywania uniemożliwia wykonanie skryptów PS. Dlatego uczę się partii, aby tłumaczyć moje skrypty PS. Są więc sytuacje, w których Batch jest nadal potrzebny ...
T_D

Zgodziłem się z twoją odpowiedzią w 2011 roku, ale dzięki aktualizacji Windows 10 Creators Update Microsoft ustawił PowerShell jako domyślny po naciśnięciu Win + X, wpisaniu „cmd” w menu Start i przytrzymaniu Ctrl po kliknięciu prawym przyciskiem myszy w Eksploratorze. Więc teraz uważam Powershell za domyślny język skryptowy dla Windows, ponieważ Windows 10 Creators Update i starsze skrypty BAT / CMD.
Jonas

10

To zależy od tego, kogo zapytasz. Niektórzy nigdy nie opuszczą partii, inni uwielbiają vbscript, a niektóre PowerShell, inni jak AutoIt. Są też niezależne od platformy, takie jak Python i Perl, które niektórzy przysięgną na wszystko.


2
+1 za wzmiankę o wieloplatformowych językach skryptowych (Perl jest moim ulubionym i wiem, że Python zyskuje popularność także przez lata).
Randolf Richardson

2
+1 dla Perla. Jest przydatny na wielu platformach i zawiera moduły specyficzne dla systemu Windows.
RedGrittyBrick

1
Dodałbym, że TinyPerl jest bardzo użytecznym sposobem na osadzenie prostego skryptu Perl bez zbyt wielu zależności. Skompiluje się do małego pliku EXE w systemie Windows. tinyperl.sourceforge.net
Benoit

4

Przypuszczam, że oficjalnym „językiem” skryptowym dla Windows byłby (i jest od Win95) Windows Script Host .

Technicznie rzecz biorąc, WSH nie jest językiem samym w sobie, ale raczej środowiskiem (nie GUI), które udostępnia interfejsy COM , aby umożliwić ci używanie (prawie) dowolnego języka skryptowego, który chcesz, do robienia rzeczy w systemie operacyjnym, nawet rzeczy, które nie są wbudowane w natywny sposób język (na przykład Ruby nie ma wbudowanego sposobu logowania do systemu Windows lub TCL / TK nie ma wbudowanego sposobu wyświetlania okna dialogowego Uruchom).

Być może widziałeś niektóre pliki WSF, które mogą zawierać wiele języków w jednym pliku, ale zwykle skrypty WSH są pisane w jednym języku i dystrybuowane z rozszerzeniem odpowiadającym wersji skryptowej tego języka (np. VBS dla skryptów VisualBasic, PYS dla PythonScript itp. .)


[dreszcze się nasilają], pisałem to. Wiesz, że możesz uruchamiać dowolne skrypty WSH z IE? Czy to nie dziwne? Fajnie, jak otwierają tak dużo swojego interfejsu API w sieci. (Oświadczenie, ten cynizm datowany jest na XP-SP3)
ThorSummoner

Historia o WSH i IE nie jest wcale taka prosta: msdn.microsoft.com/en-us/library/bb250473(v=vs.85).aspx (tylko jeden przykład ograniczeń, w zależności od stref bezpieczeństwa) I IE 11 nie Nawet nie obsługuje już VBScript, oprócz trybu starszego typu. Nie polegaj na IE do wykonywania skryptów WSH.
Jonas

4

Powiedziałbym, że AutoIt zapewnia bardzo szybki i łatwy rozwój w systemie Windows i jest z nim bardzo ściśle związany. Oznacza to, że zadania, które zwykle zajmują dość dużo kodu w innych językach, można wykonać dosłownie w jednym wierszu w programie autoit. Bardzo przydatne są również takie funkcje, jak bezpośrednia kompilacja do plików exe.


Podobnie jak monocery, używam AutoIt . Jest niezwykle wszechstronny w przypadku nawet szybkiego prototypowania i testowania koncepcji w ciągu kilku minut. Między innymi jest przeznaczony do automatyzacji, do czego widzę wiele osób korzystających z PowerShell. Spróbuj :)
James

1
AutoIt jest całkiem fajny, szczególnie w przypadku funkcji interfejsu użytkownika (zachowuje się jak użytkownik wpisujący się w oknie dialogowym, wciskając przyciski itp.), Ale wywołanie w „głównym” języku skryptowym Windoze byłoby naprawdę trudne. Obecnie większość moich kolegów (w zespole ponad 20 administratorów Windows) nawet o tym nie słyszała.
ewall

2

Inne języki wskazane w tym pytaniu (VbScript, PowerShell, Batch) są bardzo popularne i obsługiwane. Jeśli znasz już język skryptowy i czujesz się komfortowo - w każdym razie idź z tym.

Jeśli masz zamiar zainwestować w wybranie nowego języka, proponuję dla ciebie dwa języki, w zależności od pracy, którą próbujesz wykonać:

JavaScript (przez WSH) - użyj JavaScript, jeśli chcesz używać różnych obiektów automatyzacji, tworząc je i wywołując ich model obiektów. Możesz utworzyć obiekt automatyzacji dla prawie wszystkiego, od serwera Exchange, przez WMI, po dokumenty Office. Istnieje obsługa debugowania w Visual Studio (z argumentem / x). Również inwestycja w JavaScript okaże się przydatna w HTML.

Perl - użyj Perla, jeśli możesz uruchamiać inne programy, manipulować ich danymi wyjściowymi, wykonywać wyrażenia regularne. Chociaż wydaje się, że ten język jest obecnie w fazie upadku, nadal jest bardzo popularny, bardzo dobrze obsługiwany przez duży język społeczności. Należy również wziąć pod uwagę ten język do komunikowania się z innymi usługami (niekoniecznie Windows), takimi jak JIRA w przedsiębiorstwie lub EC2 w Amazon. Debugowanie jest obsługiwane w środowisku eclipse z EPIC, które jest również dobrym środowiskiem IDE (kolorowanie składni itp.). W CPAN są moduły do ​​wszystkiego. Znajomość języka Perl okaże się przydatna podczas automatyzacji na komputerach innych niż Windows.


1
Python jest bardzo dobrą alternatywą dla Perla, chociaż rzeczy, których użyjesz, są prawie identyczne
Phoshi

1

Na początku pojawił się VBScript, a następnie Batch, w środowisku korporacyjnym z czystym Windows 7 i Server 2008 R2 nowy język skryptowy Powershell cieszy się dużym zainteresowaniem.


Wygląda na to, że wyrażasz chęć przejęcia programu PowerShell. Czy słusznie byłoby założyć, że „chcesz, aby to był” PowerShell? ;-D
Randolf Richardson

Wolę powerhell od vbscript tak.
EKS

1

Popieram zalecenie dla Perla, jeśli masz zamiar napisać kilka skryptów Perla. Osoby, z którymi pracuję, z powodzeniem wykorzystują i polecają CLR Script (nieco stary), a do obsługi skryptów interakcji z Internetem - iMacros


1

Może to być prawie wszystko, w zależności od tego, co próbujesz zautomatyzować. Będzie się różnić od plików wsadowych i programu PowerShell po autohotkey i Selenium (jeśli musisz zautomatyzować niektóre zadania związane z GUI).

Zazwyczaj nauczenie się tego nie stanowi problemu, jeśli trzeba dodać jakieś modyfikacje lub wesprzeć już napisane skrypty. Jeśli potrzebujesz opracować coś nowego - wybierz język / sposób na podstawie wymagań i tego, co już wiesz.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.