Jako administrator systemu Unix i Windows, który wykonuje wiele skryptów uniksowych i prawie nie używa skryptów Windows, powiedziałbym, że jest to częściowo spowodowane niesamowitą niewygodnością narzędzi i interfejsów API Windows oraz trudnościami (być może nieoczywistość byłaby lepsze słowo) uruchamiania rzeczy zdalnie na komputerze z systemem Windows.
To znaczy, WTF to jest?
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Częścią problemu, jak sądzę, jest to, że nie jest API. W systemie Unix administratorzy w dużej mierze skryptują automatyzację narzędzi wiersza polecenia, z których już korzystają. W systemie Windows musisz korzystać z tego nieznanego na każdym poziomie interfejsu API. Na przykład, co oznacza „podszywanie się”? To banalna koncepcja dla administratora systemu Unix, który prawdopodobnie używa sudo i su i zna już skrypty setuid. Ale administrator systemu Windows raczej nie zna tego; mogą wiedzieć o „runach” (lub równoważnej opcji GUI), ale znacznie bardziej prawdopodobne jest, że zalogują się jako administrator, gdy będą musieli zrobić coś administratora.
A dokumentacja dotycząca skryptów w systemie Windows jest nieszczęśliwa. Po pierwsze, jest to o wiele bardziej „język interpretowany” niż skrypt, ponieważ używają (nieznanego) interfejsu API, a nie poleceń, które już znają. Ale nie sądzę, że kiedykolwiek znalazłem coś przydatnego w dokumentacji Microsoftu, do czego nie doprowadziło to znalezienie kogoś, kto już robił coś zbliżonego do tego, co chciałem, co wskazało mi właściwy kierunek. Nigdzie nie wydaje się lista rzeczy do zrobienia. To tak, jakbyś już musiał znać wewnętrzne elementy systemu Windows, aby wykonywać najbardziej podstawowe czynności.
Nie to, że skrypty uniksowe często nie wyglądają jak szum linii. Ale administrator systemu Unix może zacząć od skryptu, który wykonuje tylko proste polecenia, które już zna. („Zawsze muszę uruchamiać te trzy polecenia po kolei. Jeśli po prostu połączę je w pliku, mogę to zrobić za pomocą jednego polecenia!”). Następnie będzie mógł robić postępy, gdy będzie mu wygodnie. W przeciwieństwie do tego, administrator nie może napisać skryptu „zaloguj się na serwerze jako administrator; kliknij Start → Ustawienia → Panel sterowania; kliknij dwukrotnie System; kliknij kartę Nazwa komputera; itp.” Tak, wszystko, do czego próbował dotrzeć, jest prawdopodobnie gdzieś prezentowane przez API, ale nie ma sposobu, aby stopniowo to znalazł.
Tak więc, aby odpowiedzieć na pytanie „w jaki sposób możemy zmusić administratorów Windows do wykonywania większej ilości skryptów?”, Odpowiedź brzmi: uczyń skrypty mniej obcymi. Jak to zrobić, nie wiem.
Szczerze mówiąc, odpowiedź należy do Microsoftu. Nie ma powodu, dla którego nie mogą mieć narzędzia wiersza polecenia do robienia wszystkiego, co jest zrobione za pomocą GUI. (W rzeczywistości jest ich teraz dużo, ale nie są reklamowane, są słabo udokumentowane i są niespójne.) Nie ma również powodu, aby w GUI nie było żadnej wskazówki, co ten przycisk faktycznie działa. Przygotuj podpowiedź, która pokazuje modyfikowany obiekt API. Lub udokumentuj to w oknie Pomoc.
Nie ma problemu z ochroną użytkowników przed elementami wewnętrznymi, ale Windows wydaje się, że aktywnie ukrywa te elementy wewnętrzne, nawet przed tymi, którzy chcą je znaleźć.
ls -1 *old* | awk '{print "mv "$1" "$1}' | sed s/old/new/2 | sh