Dawno temu napisałem prosty skrypt, który usuwał wszystkie podkatalogi o podanych nazwach w określonym katalogu:
Remove-Item * -Force -Recurse -Include name1,name2,name3 -ErrorAction SilentlyContinue
Długo go nie używałem, ale teraz był mi potrzebny. Uruchamiam - nic nie zostaje usunięte.
„WTF?” – myślę. Zacząłem kopać. Bawiłem się i bawiłem, przejrzałem wszystko, utworzyłem wcześniej listę i zmieniłem nazwiska - nadal nic nie zostało usunięte. Wreszcie w ich dokumencie przeczytałem: „W rzeczywistości opcja -Include jest błędna, gdy jest używana w połączeniu z -Recurse, więc użyj konstrukcji kulowej.":
Ponieważ występuje znany problem z parametrem Recurse w Remove-Item, polecenie w tym przykładzie używa Get-ChildItem do pobrania żądanych plików, a następnie używa operatora potoku do przekazania ich do Remove-Item.
No cóż, przepisałem to, używając tej kuli. Świetna sprawa – niczego nie usuwa. Ponadto, Get-ChildItem с -Włączać zwraca pustkę. Powtórzę raz jeszcze: niezależnie od tego, co zrobiłem, niezależnie od tego, jak zniekształciłem parametry, to nie zadziałało. Najważniejsze jest z -Wykluczać działa, ale z -Włączać nie ma mowy. Spędziłem nad tym cały dzień: ciągle myślałem, że gdzieś w parametrach coś schrzaniłem, że nie wziąłem pod uwagę jakiegoś skomplikowanego niuansu. I co się w końcu stało? Zainstalowałem je na PS7.1 i zadziałało. Zawiera nawet pierwszą opcję bez kuli, używając tylko Usuń przedmiot zarobione. Ogólnie okazało się, że to ich błąd.
Ale ponieważ cierpiałem z powodu ich Mighty Shell, udałem się do Google, aby przeczytać, dlaczego ich powłoka ma tak oszałamiającą składnię. Cholera, ustawiają go jako .NET dla konsoli, ale nawet nie czują składni C#. Zamiast niego…
W każdym razie natknąłem się na ten artykuł: „
Podejrzewam, że zespół Mighty Shell to grono fanów Basha.
- Zróbmy wreszcie konsolę dla Windows, w której będziesz mógł pisać złożone skrypty. W przeciwnym razie nasze cmd jest przestarzałe, do tego stopnia, że jesteśmy już trochę zawstydzeni.
- Zróbmy! Na podstawie tego, co zrobimy? Mamy już VBScript, JScript. Wreszcie mamy języki dla .NET: C#, VB. Może uda nam się to zrobić w C#? To znaczy, będziemy używać C# jako języka skryptowego dla naszej konsoli. Ponadto chcemy tam dodać klasy .NET.
- Nie, co robisz, koleś, jaki C#? Prawdziwi maniacy używają basha! Stwórzmy więc bash dla Windows. Nie obchodzi mnie, że składnię basha najwyraźniej napisał tłum naćpanych hipsterów w latach sześćdziesiątych. Ogólnie rzecz biorąc, im bardziej skomplikowane, tym lepiej! Intuicja jest dla słabych! Pisząc skrypt w naszym języku, użytkownik musi przekląć wszystko na świecie i wymyślić kilka nowych przekleństw. Tylko taki język ma prawo do życia. Spójrz, ludzie z Linuksem żyją w ten sposób przez całe życie i czerpią z tego niewytłumaczalny dreszczyk emocji. Dlaczego jesteśmy gorsi?
W ankiecie mogą brać udział tylko zarejestrowani użytkownicy.
Czy korzystasz z PowerShell i czy czujesz się z tym komfortowo?
-
30,3%Nie używam 40
-
29,6%Spróbowałem i nie przypadło mi do gustu 39
-
23,5%Używam go i jestem zadowolony ze wszystkiego31
-
12,9%Używam, ale nie jestem zadowolony17
-
3,8%Brawo! Nareszcie mogę używać mojego ulubionego basha na Windowsie!5
Głosowało 132 użytkowników. 26 użytkowników wstrzymało się od głosu.
Źródło: www.habr.com