Skip to Content

IT nieuczesane.

AzureDay Poland (:

AzureDay_Poland

dopiero wrzucałem informację o ITechDay organizowaną przez WGUiSW, dziś jeszcze jedno zaproszenie – tym razem na AzureDay, organizowane przez grupę Azurę. WFiles czynnie uczestniczy w działalności grup. wkrótce napiszę parę słów na ten temat, ponieważ moim zdaniem wiele osób nie docenia tego, czym są tzw. ‚społeczności’. tym czasem ZapytajEmila

eN.

.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.

Microsoft_Azure_User_Group_Poland_logoKonferencja AzureDay Poland

Już 9 marca 2016 roku społeczność profesjonalistów, architektów, programistów i pasjonatów rozwiązań Microsoft Azure, zgromadzona w grupie Microsoft Azure User Group Poland wraz z Partnerami organizuje całodniowe wydarzenie poświęcone rozwiązaniom Microsoft Azure.

To jedyna i niepowtarzalna okazja aby uczestniczyć w tym wyjątkowym przedsięwzięciu. Po raz pierwszy w Polsce, społeczność IT organizuje konferencję poświęconą wyłącznie Microsoft Azure. Na jednej scenie, aby dzielić się z uczestnikami swoją wiedzą, staną wszyscy czterej polscy specjaliści wyróżnieni przez Microsoft tytułem Most Valuable Professional (MVP) w kategorii Microsoft Azure – Andrzej Kaźmierczak, Łukasz Kałużny, Michał Smereczyński oraz Emil Wasilewski. Obok nich, swoje prelekcje wygłoszą m. in. tak znane postaci jakimi są Tomasz Kopacz, Łukasz Grala, Mirosław Burnejko czy Tomasz Wiśniewski.

Konferencja AzureDay to także pierwsze w Polsce warsztaty poświęcone Internet of Things (IoT) w oparciu o platformę Microsoft Azure. Z tej wyjątkowej okazji skorzystać będzie mogło jedynie 12 osób, a warsztaty poprowadzi wspomniany już Tomasz Kopacz.

Konferencja toczyć się będzie w dwóch głównych ścieżkach IT Pro oraz Dev. W tym wyjątkowym wydarzeniu w siedzibie Microsoft Polska w Warszawie uczestniczyć będzie mogło jedynie 50 programistów i 100 przedstawicieli specjalistów z dziedziny IT Pro.

Na konferencję zapraszamy, administratorów, programistów, konsultantów, architektów, przedstawicieli kadry odpowiedzialnej za rozwój IT w przedsiębiorstwie oraz tych wszystkich, którzy chcą zaznajomić się z chmurą Microsoft. Tematyka konferencji obejmować będzie swym zakresem technologie Microsoft ale również Open Source. Usłyszeć będzie można o rozwiązaniach hybrydowych, bezpieczeństwie, procesach migracji do chmury a także środowiskach testowych czy Machine Learning.

Nasze spotkanie to niebywała okazja do porozmawiania twarzą w twarz ze specjalistami, którzy na co dzień projektują i wdrażają rozwiązania w oparciu o chmurę Microsoft Azure.

Konferencje organizowane przez społeczność nie mogłyby być realizowane, gdyby nie pomoc i wsparcie Partnerów. W śród nich znajdują się firmy, które wdrażają rozwiązania chmurowe u swoich Klientów ale także i takie, które z Microsoft Azure korzystają na co dzień. To wyjątkowa okazja, aby nawiązać kontakty biznesowe z praktykami w dziedzinie chmury obliczeniowej Microsoft.

AzureDay jako jedna z nielicznych konferencji organizowanych przez społeczność, będzie konferencją płatną. Cena biletu wstępu na ścieżki Dev oraz IT Pro wynosić będzie 49,99zł netto, a w przypadku chęci uczestniczenia w warsztatach IoT, koszt uczestnictwa to 99zł netto. W ramach opłaty za bilet, uczestnik otrzyma pakiet powitalny, ciepły posiłek oraz przekąski w trakcie przerw między sesjami. Dodatkowo, w cenie biletu na warsztaty IoT uczestnicy otrzymają bon o wartości $200 do wykorzystania w Microsoft Azure.

Śledźcie nasz fanpage na Facebooku oraz zaglądajcie na stronę konferencji aby być na bieżąco z nowościami jakie będzie publikować nt. Konferencji!

Strona www organizatora (Azure User Group Poland): http://azureug.org/

Strona społeczności na portalu facebook.com: https://www.facebook.com/groups/azureugpl/

Twitter: https://twitter.com/AzureDayPL

Strona www konferencji: http://azureug.org/AzureDay

 

Osoby kontaktowe

Emil Wasilewski

LIDER GRUPY OGÓLNOPOLSKIEJ
LIDER GRUPY WARSZAWSKIEJ

e-mail: emil@zapytajemila.pl

Michał Smereczyński

LIDER GRUPY OGÓLNOPOLSKIEJ
LIDER GRUPY SZCZECIŃSKIEJ

e-mail: michal.s@free-media.eu

 

ITechDay 2o16!

LogoITechDay

Szanowni WFilesowicze!

Warszawska Grupa Użytkowników i Specjalistów Windows (WGUiSW) wraz z Partnerami gorąco zapraszają na kolejną konferencję z cyklu ITechDay. Tym razem tematyka wydarzenia zostanie poświęcona następującym zagadnieniom z obszaru technologii Microsoft:

  • kopie zapasowe,
  • odzyskiwanie po awarii,
  • ochrona danych.

Wierzymy, że zaproponowane hasła przypadną do gustu dając gwarancję prawdziwie technicznego wydarzenia. Spotkanie odbędzie się 29 lutego 2016r. (9.00-16.00) w siedzibie Microsoft Polska w Warszawie.
Sesje poprowadzą znani prelegenci posiadający bardzo bogate doświadczenie praktyczne poparte wieloma certyfikatami zawodowymi. Konferencja ITechDay będzie transmitowana online za pośrednictwem platformy Channel 9. Partnerzy konferencji zadbali o to, aby wszyscy uczestnicy mieli szansę udziału w konkursach z nagrodami.
Wszystkie informacje odnajdą Państwo na stronie konferencji www.ITechDay.pl.
Aktualności dotyczące wydarzenia można śledzić na www.facebook.com/ITechDay.
Serdecznie zapraszamy do rejestracji i udziału w konferencji.
Informujemy, że rejestracja na konferencję rozpocznie się 10 lutego 2016r. od godziny 12.00.
Udział w ITechDay jest bezpłatny a o uczestnictwie decyduje wyłącznie kolejność zapisów.

W imieniu Organizatorów
Paweł Pławiak, lider WGUiSW
pawel.plawiak@wguisw.org

78 spotkanie WGUiSW

big_wguiswtak gwoli przypomnienia – dziś pierwszy wtorek miesiąca (:

78. spotkanie WGUiSW

eN

wrażliwość na wielkość addendum

linkrobiąc w toalecie to, co się normalnie tam robi, czyli czytając RSSy, okazało się, że całkiem niedawno na blogu Scripting Guy również poruszany był temat Case Sensivity w PowerShell. jest tam jeszcze sporo ‚wyjątków’, o których warto sobie poczytać.

eN.

wrażliwość na wielkość

BnSOffTopic

ogólnie staram się szanować nasz piękny język i tępić ‚kontenty’ czy ‚autentykację’ [choć pewnie lada moment zostaną zapisane jako oficjalnie poprawne]. niemniej tłumaczenia niektórych fraz brzmią … zabiera trochę czasu, żeby się domyślić /: to na tyle jeśli w kwestii filozofii porannej, czas na gimnastykę z innego języka.

PS case sensivity

PS jest miły i przyjemny. stara się użytkownika we wszystkim wyręczyć, pomóc mu, wybaczyć błędy. czasem aż do przesady. ale jak każda istota, ma swoje odchyły, aberracje. tak też jest w przypadq traktowania wielkości znaków – ogólnie wszystko, dla ułatwienia, jest z automatu niewrażliwe na wielkości znaków. czyli mówiąc potocznie, jest baj difolt kejs-insensitive. są jednak wyjątki [bez których reguła nie mogłaby być pełna]:

  1. najbardziej zdradliwe, bo też i często używane, to ‚-unique’. z jednej strony logiczne, że unikalne ma być unikalne… z drugiej, skoro PS jest nieczuły na stan [prawda,  że też ładne tłumaczenie?], to skąd nagle taka zmiana…

jak widać, każdy =))o- jest unikalny. rozsądnie. tak samo zresztą zachowuje się polecenie ‚get-unique’, a mogłoby się wyróżniać choćby dodatkowym parametrem ‚-CI’. ale się nie wyróżnia.

na każdego jest oczywiście metoda, tzw. walec. takim walcem w PS jest sortowanie, które również posiada parametr ‚-unique’, ale ten unique jest bardziej unique niż inne, bo jest właśnie nieczuły na wielkość:

[to nie jest prawidłowy =))o- ]

  1. drugim przykładem, zapewne bardziej [nomen omen] unikalnym, są wyrażenia regularne. oczywiście i tutaj są dwie wariacje – CI i CS, więc trzeba uważać. jeśli używa się zwykłych reguł ‚match’ lub ‚replace’, zachowuje się standardowo [czyli nie zwraca uwagi na wielkość znaków]:

jeśli jednak zdefiniuje się wyrrega [tak pewnie nazywał by się w polskiej wersji Logo. tłumaczone języki to  sqcha] … regexa, to zachowuje się inaczej [czyli CS]:

zmusić regexa do niewrażliwości można na dwa sposoby – albo definiując dodatkową opcję podczas deklaracji, lub modyfiqjąc samą definicję wyrażenia. pierwsza wersja może przestraszyć swoją monstrualnością, ale jak się w kodzie definiuje wiele regexów to warto raz zdefiniować i potem używać:

opcje są wartością binarną, której każdy bit ma inne znaczenie. stąd binarny OR modyfiqjący jej wartość. jeśli wyrażeń regularnych w kodzie jest niewiele, bardziej opłaca się CI ustawić w jego definicji:

PostScriptum

znajomość sztuczek i tricków języka jest bardzo przydatna. można zaoszczędzić wiele linii kodu, a czasem bardzo wiele czasu, zmarnowanego na wyważanie otwartych okien. polecam również zajrzeć na powershellpl.net, ponieważ Bartek się w końcu uaktywnił.

eN.

 

 

hurtowe pobranie mediów z doqmentów office

dziś ponownie goszczę na blogu Adriana, który zasila WF systemowymi tips’n’tricks (:

.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.

Jak szybko „wyciągnąć” wszystkie zdjęcia i video z pliku Powerpoint , Word lub Excel?

Niejednokrotnie spotkałem się z prośbą lub pytaniem znajomych o szybki sposób na hurtowy eksport obiektów z plików pakietu Office. Oczywiście, można to zrobić ręcznie, eksportując każde ze zdjęć, ale nie o to przecież chodzi.

Otóż jest pewien sposób na dość szybkie wydobycie z naszych prezentacji lub dokumentów wszystkich mediów – zdjęć, dźwięków lub Video – w formie oddzielnych plików.

Jak to zrobić ?

Wystarczy zmienić rozszerzenie pliku np. powerpoint’a z PPTx na zip:

media02media01


po dokonaniu zmiany wystarczy dwukrotnie kliknąć na archiwum i w strukturze folderów wyszukać folder Media w którym to będą pliki których szukamy.

media03

Adrian Szwejkowski

.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.

eN.

ReadKey()

Windows_PowerShell_iconniektóre skrypty powinny pozwolić na dodanie wyboru akcji w trakcie przetwarzania – typu ‚wykonanie akcji A, naciśnij ‚A’, akcja B, naciśnij ‚B’, wyjdź ‚W”… ogólnie należy unikać takiego kodu ale czasem chcemy zrobić skrypt ‚miły’, user-friendly. metod jest kilka, a im bardziej user-friendly tym mniej uniwersalna.

źle

najładniejszą będzie oczywiście dodanie formatki GUI. formatka GUI wymaga bibliotek graficznych. znaleźć można różne wynalazki, z których najśmieszniejszy to korzystanie z WSH O_o’  [ nieznoszę takich frankensteinów]. .NET zawiera oczywiście odpowiednie klasy, można więc skorzystać z klasy System.Windows.Forms.Messagebox – tutaj praktyczny przykład. podstawowe wady tej metody to: wymaga bibliotek Forms, czyli nie zadziała na wersjach Core, oraz nie zadziała w sesjach zdalnych (remoting).

lepiej

inną metodą jest zwykły ReadKey. trzeba niemniej uważać na sposób jego wywołania. najprostsza metoda wywali się w sesji zdalnej:

można zatem użyć metody z obiektu host:

ta jednak metoda wymaga, aby host ją obsługiwał, czyli nie zadziała np. w ISE.

najlepiej

najbardziej natywny ‚PowerShell’ to wykorzystanie metody PromptForChoice obiektu Host.UI, z którego korzystają commandlety. Dzięki temu zachowany jest spójny ‚user-experience’, a metoda zadziała w sesji zdalnej, ISE, konsoli itp, itd [w ISE wyświetli okienko (: ]:

[kod z Technet]

eN.

 

Windows 1o: run as different user

repairdzisiejszy wpis przygotowany jest przez Adriana. ostatnio zrobiło się mocno PowerShellowo, a dzięki takim wpisom udaje się wrócić do pierwotnej formuły W-F, ponieważ pomimo, iż pojawiają się fragmenty kodu, to temat jest czysto systemowy (:

„Jako priority number uno przyjmuję udowadnianie jak bardzo wizerunek człowieka związanego z branżą IT różny jest względem przyjętych stereotypów (podobno czasem się udaje) . Jestem pasjonatem technologii Microsoft, a szczególnie rodziny produktów System Center, nie zapominam jednak o innych dobrych rozwiązaniach. Architekt , Analityk, Administrator (AAA?) – a gdy się ściemni PowerShell Ninja. Słowem nieco udomowiony Geek zarażający swoją pasją Syna. I odpowiadając na pytanie – Nie, do snu nie czytam mu dokumentacji technicznej ;-)

.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.

Pracując od dłuższego czasu na najnowszym systemie operacyjnym ze stajni Microsoftu- Windowsie 10 coraz to bardziej doskwierał mi brak bezpośredniej możliwości uruchomienia programu w kontekście innego użytkownika z poziomu GUI a konkretnie z wyszukanych aplikacji w Menu Start.  Administratorom systemowym niejednokrotnie potrzebna będzie możliwość uruchomienia danej aplikacji nie tylko przy pomocy zwiększonych uprawnień (elevated rights) ale również przy wykorzystaniu zupełnie innego konta.

Niestety funkcjonalność ta domyślnie nie jest dostępna  w Menu Start – opcje które widzimy ograniczają się do poniższej listy

image1

Zanim powiemy sobie w jaki sposób dodać tutaj magiczny „Run as different user” powiedzmy w jaki sposób na szybko możemy spróbować obejść ten problem nie rozpisując się zbytnio nad każdym z nich

  1. Możemy wyszukać aplikacje i przypiąć ja do TaskBar’u po czym użyć dobrze nam znanej kombinacji
    Shift + prawy przycisk myszy na skrócie i wybór opcji „Run as a different user”  – tadam
    unnamed
  2. Dla oldschoolowców znających ścieżkę aplikacji lub posiadających ścieżkę do niej w zmiennej typu path możemy wykorzystać  Command Line i opcje Runas z przysłowiowego palca
    Najprostszy syntax wygląda następująco  :

    unnamed02
    Więcej na temat dodatkowych opcji i samego syntaxu aplikacji Runas znajdziecie tutaj – https://technet.microsoft.com/en-us/library/bb490994.aspx
  3. Oczywiście można by wykorzystać tez powershella który jak zwykle daje nam „nieco” więcej możliwości Commandlet który może przyjść nam z pomocą to „start-process” z przełącznikiem credentials (lub jak kto woli „runas”)

unnamed03Więcej na temat dodatkowych opcji i samego syntaxu commandletu Start-Process znajdziecie tutaj – https://technet.microsoft.com/library/hh849848.aspx lub za pomocą komendy „get-help start-process” (pamiętajcie o aktualizacji „helpa” ;) )

 

Ale przecież nie o to nam chodzi – mimo całej wspaniałości jaka niewątpliwie jest powershell lub możliwość klikania jednak fajnie by było dorzucić sobie opcje uruchomienia w kontekście innego użytkownika bezpośrednio z GUI

Jak więc to zrobić? –  z pomocą przyjdzie nam pewna drobna modyfikacja rejestru – aby nie dawać uprawnienia każdemu polecam dokonać edycji w hive Current User

GUI version  – Regedit

Uruchamiamy Menu start i wpisujemy Regedit – uruchamiamy  i przechodzimy do ścieżki

HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows

Tworzymy nowy klucz (Key) o nazwie Explorer  jeżeli jeszcze nie istnieje

W nowo powstałym kluczu tworzymy wartość typu Dword o nazwie ShowRunasDifferentuserinStart i zmieniamy jej wartość na 1

Restart i gotowe ;)

GUI Version – Gpedit

Uruchamiamy Menu start i wpisujemy gpedit  – uruchamiamy

W nowo otwartym oknie przechodzimy do „user Configuration” -> Administrative Templates -> “Start Menu and Taskbar” – następnie wyszukujemy ustawienie „Show ‘Run as Different user’ command on Start”  – przestawiamy ustawienie na Enabled ;)

No Restart Needed!

PS version 

Odpalamy Powershella I

Lazy Version

Chcemy mieć to z głowy ? Pobieramy plik Reg i uruchamiamy go dwukrotnie klikająć

http://1drv.ms/1MjsSaT

Restart i gotowe ;)

Jezli opcja konfiguracji która wybraliśmy wymaga restartu to po jego dokonaniu powinniśmy widzieć już dodatkowa opcje w menu kontekstowym po kliknięciu prawym przyciskiem myszy na aplikacji w menu start tadam.

image5

.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.

eN.

 

obsługa błędów

catchAllTheErrors-615x461obsługa błędu może przyprawić nieco problemu, dla tego kilka zebranych tips’n’tricks, które mogą się przydać.

try/catch nie działa!

czasem nie działa. a to dla tego, że klauza catch zostanie wykonana dla błędów ‚terminujących’. większość błędów natomiast jest ‚zwykłymi’ błędami, nieterminującymi. zachowanie można zmienić albo zmieniając standardowe zachowanie poprzez globalnie ustawienie zmiennej

co spowoduje nadpisanie wartości ustawionych dla commandletu.

można też po prostu dodać parametr ‚-ea’ dla konkretnego wywołania. przykład. to nie zadziała zgodnie z oczekiwaniami:

napis ‚tu nie działa’ nigdy się nie pojawi. poprawiona wersja:

zapytanie reqrsywne

problem z takim wymuszeniem jest w przypadq zapytań reqrsywnych. scenariusz: chciałbym wyszukać wszystkie katalogi, do których nie mam dostępu. robię reqrsywne przejście po katalogach i ustawiam błąd jako terminujący:

niby działa… ale, błąd jest terminujący. co oznacza, że po pierwszym wystąpieniu zakończy działanie wykonania. zobaczymy tylko pierwszy katalog, do którego nie mamy dostępu.

należy skorzystać z innej metody – przekazania błędów do zmiennej. uzysqje się to poprzez parametr ‚ErrorValue’ [alias ‚ev’]. wada jest taka, że zmienna zwracana jest po zakończeniu działania. tutaj już nie ma try/catch!

oczywiście jeśli nie chce się oglądać błędów z przebiegu, to można sobie dodać ‚-ea SilentlyContinue’ .

szczegóły błędu

na ekranie nadal będzie śmietnik. fajnie byłoby złapać tylko nazwy – i np. dla nich coś wykonać. dla tego warto zapoznać się z obiektem błędu:

teraz widać co mamy do dyspozycji. wyjątkowo ciekawe do obsługi będą ‚FullyQualifiedErrorId’ pozwalający na zdefiniowanie logiki zależnie od rodzaju błędu, oraz ‚TargetObject’ gdzie powinna znaleźć się informacja o obiekcie, który wygenerował błąd. proponuję przetestować, bo tak najlepiej się uczyć:

nie wszystko jest błędem

i na koniec – nie wszystko co my uważamy za błąd, jest błędem. nie mam teraz przygotowanego przykładu, niemniej zdarzało mi się, że commandlet zwracał null lub informował o niepowodzeniu – co było jak najbardziej prawidłowym zachowaniem a nie błędem per se. w takim przypadq trzeba sobie obsłużyć błąd zwykłym if’em bo try/catch tego nie znajdzie.

eN.

PS Proxy Function

800px-Mucha-jobnie podoba Ci się w jaki sposób działa jakieś polecenie? nie chcesz/nie możesz grzebać w źródłowych plikach?

dziś Kacper pokaże, w jaki sposób nadpisać standardowe polecenie, przesilając je.

.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.

Tym razem dla odmiany najpierw skrypt, potem opis.

Jak widać, dzieje się i to dużo. Zaczynając od początku, to co widać powyżej to tzw. proxy function. Co bystrzejsze oko pewnie zauważyło, funkcja ma dokładnie taką samą nazwę jak jeden z domyślnych cmdletów powershellowych. Proxy function powstały właśnie po to, aby umożliwić modyfikowanie działania wbudowanych cmdletów, czy też rozbudowywanie ich o nowe możliwości. Kod wydaje się być dosyć skomplikowany, ale zdecydowana większość została wygenerowana automatycznie za pomocą poniższych komend:

Generują one szkielet cmdletu, który chcemy modyfikować. Całość trzeba jedynie umieścić w dowolnie nazwanej funkcji. Jeśli nie nazwiemy jej tak samo jak istniejący cmdlet to stworzymy wtedy jego kopię z nowymi funkcjonalnościami oraz nazwą.

Aby zdefiniować nowe parametry, należy dodać ich definicję w sekcji param(), tak jak przypadku zwykłej funkcji. W tym przypadku, jeśli podany zostanie nowy parametr -Unbuffered, zmienna scriptCmd, która decyduje o tym co faktycznie się wykona, zostanie zmodyfikowana tak, żeby uruchamiać narzędzie xcopy, które oferuje kopiowanie bez użycia bufora (przełącznik /J). Cmdlet Copy-Item domyślnie nie posiada takiej możliwości. Ale naprawdę ciekawie zaczyna się robić, dopiero po użyciu parametru -Progress. Najpierw uruchamiane jest narzędzie xcopy z poleceniem -PassThrough, dzięki czemu można zapisać wynik w zmiennej, a potem odczytać chociażby id stworzonego procesu.

Jednak najbardziej interesującym fragmentem w tej części kodu jest funkcja Get-IoCounterMb. Dlaczego powstała i dlaczego wygląda tak, a nie inaczej? Jako, że xcopy nie udostępnia żadnych informacji nt. postępu procesu kopiowania, stwierdziłem, że sprawdzę wielkość kopiowanego pliku, a potem będę w pętli odczytywać z performance counterów ilość megabajtów zapisywanych przez proces xcopy w danym momencie. Użyłem runspace’ów, ponieważ z nieznanych mi obecnie powodów powershell nie widział szukanego countera i zwracał błąd. Dopiero utworzenie nowego wątku, podczas tworzenia runspace’a, pozwoliło mi na odczytanie wartości countera dla procesu xcopy. Dlaczego nie użyłem jobów? Ponieważ joby tworzą nowy proces, a nie wątek w obrębie istniejącego procesu, a tym samym zużywają więcej zasobów. Potem scriptblock już tylko czeka na uruchomienie xcopy i od tego momentu pokazuje postęp za pomocą Write-Progress, dopóki proces nie przestanie istnieć. Okazało się, że nie da się tym sposobem zilustrować postępu kopiowania, ponieważ cmdlet Get-Counter, mimo ustawionego czasu odstępu na 1ms w pętli, nie jest w stanie tak szybko zwracać wyników. I tak, dla pliku o wielkości 16GB, pasek postępu kończy się na 12GB. Postanowiłem zostawić jednak ten fragment w celach dydaktycznych. :) Poza tym, w tym przypadku akurat chodziło mi o orientacyjną informację.

Jedna ważna rzecz na koniec. Jeśli proxy function ma taką samą nazwę jak oryginalny cmdlet to go nadpisuje. Dopiero w nowej sesji w której funkcja nie została załadowana będzie możliwe użycie domyślnej wersji cmdletu.

Kacper.

.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.

jako komentarz dodam trick: jeśli w PS komenda zostanie przesilona, to można zmusić PS do skorzystania z oryginału, podając pełną ścieżkę wraz z modułem. w tym przypadku będzie to:

na podobny problem natrafiłem przy SCVMM, który nadpisuje standardowe commandlety hyper-V. i tak aby skorzystać z oryginalnego get-vm trzeba go uruchamiać:

aby usunąć taką funkcję wystarczy … ją usunąć:

w Internetach częściej wykorzystywanym sposobem jest napisanie własnego copy. tworzy się strumień, odczytuje się w chunkach po kilka KB i wyświetla progress bar [np. tu http://stackoverflow.com/questions/2434133/progress-during-large-file-copy-copy-item-write-progress] .pomysł z odczytem liczników wydajności – niezłe (:

niemniej nie mam zaufania to takich metod i pozostaje kwestia mechanizmów cache itd. biblioteka systemowa daje pewne gwarancje. na koniec na wszelki wypadek wolałbym sprawdzić CRC (;

eN.