sobota, 28 sierpnia 2021

PowerShell: wyświetlane 30 ostatnio zapisanych/ zmodyfikowanych plików w folderze i podfolderach

Przykładowa sytuacja.

Na Pulpicie macie dużo folderów w których jest dużo plików. Zapiszecie coś w którymś z tych podfolderów. Nie pamiętacie nazwy, ani folderu w którym plik został umieszczony. 

Wtedy nerwowość szukania zapisanego dokumentu staje odwrotnie proporcjonalnie do pozostałego czasu, czyli im mniej czasu, tym większe zdenerwowanie ;)

W takich sytuacjach może się przydać poniższy "jednolinijkowiec".

Get-ChildItem -Recurse -File | Select-Object -Property FullName, LastWriteTime | Sort-Object LastWriteTime -Descending | Select-Object -First 30

Jeżeli więc chcecie wyświetlić 30 ostatnio zapisanych / zmodyfikowanych plików na Pulpicie i jego podfolderach należy odpalić PowerShella, przejść na Pulpit i wkleić powyższy kod. 

Oczywiście zamiast przechodzenia do folderu i uruchamiania kodu, ścieżkę do przeszukania można podać poprzez parametr -Path dla polecenia Get-ChildItem. Również do tego polecenia można dodać parametr -Hidden, który spowoduje wyświetlanie także ukrytych plików.

Kod uzupełniony o te dwa parametry będzie miał zatem postać:

Get-ChildItem -Path "ścieżka_do_przeszukania" -Recurse -File -Hidden| Select-Object -Property FullName, LastWriteTime | Sort-Object LastWriteTime -Descending | Select-Object -First 30

Całkiem przydatna rzecz, zwłaszcza jeśli do przeanalizowania są dziesiątki folderów z tysiącami plików. 

czwartek, 19 sierpnia 2021

Włączenie na maszynie zdalnej Pulpitu Zdalnego za pomocą PowerShella

Jak włączyć Pulpit Zdalny na maszynie do której nie macie fizycznego dostępu, a jedynie poprzez PowerShella? 

Otóż w sposób jak poniżej (działa na Windows 10).

  • Nawiązanie zdalnego połączenia do komputera, na którym ma zostać uruchomiona opcja dostępu przez Pulpit Zdalny
    Enter-PSSession -ComputerName "nazwa_komputera" -Credential (Get-Credential)
  • Dodanie wpisu w rejestrze zezwalającego na dostęp za pośrednictwem Pulpitu Zdalnego
    Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -name "fDenyTSConnections" -value 0
  • Opcjonalnie. Jeżeli dostęp przez Pulpit Zdalny nie działa to prawdopodobnie należy puścić ruch przez firewalla:
    Enable-NetFirewallRule -DisplayGroup "*Pulpit zdalny*"
No i to w zasadzie tyle. Raptem trzy kroki, a ile radości :D

sobota, 9 stycznia 2021

Dodanie tekstu z przodu i tyłu ciągu znakowego / wartości liczbowej w Notepad++, PowerShell i Excel

Co robicie gdy macie potrzebę dodania do listy gotowych ciągów znaków (lub liczb) jakiegoś tekstu na początku i końcu? Dla przykładu chcielibyście z przodu tekstu dodać słowo "przód", a tyłu słowo "tył" (prawda, że jestem kreatywny? ;D) 

Ciąg znaków posiadany i oczekiwany
Macie Chcecie uzyskać
  • TEKST1111
  • TEKST2222
  • TEKST3333
  • TEKST4444
  • przód-TEKST1111-tył
  • przód-TEKST2222-tył
  • przód-TEKST3333-tył
  • przód-TEKST4444-tył

Pewnie jest wiele sposobów na wykonanie tego zadania, ale jeżeli akurat żaden z nich nie przychodzi Wam do głowy, to może któryś z poniższych Was poratuje.

Tekst jest napisany pobieżnie bardziej jako wskazówka, niż dokładny instruktaż. 

niedziela, 20 grudnia 2020

YubiKey 5 NFC jako 2FA (two factor authentication) dla systemów Synology SRM / DSM

Jednym z lepszych gwarantów bezpieczeństwa naszych urządzeń ogólnie, czy też w szczególności znajdujących się na nich informacji, jest dwuskładnikowe uwierzytelnianie (2FA - Two factor authentication).

Chodzi w nim o to, że przy próbie zalogowania do jakiegoś zasobu (np. do interfejsu zarządzania routerem) po podaniu loginu i hasła, użytkownik proszony jest także o wprowadzenie kodu wygenerowanego przez zewnętrzną aplikację jak np. Google Authenticator, bądź Yubico Authenticator

Prośba o podanie kodu uwierzytelniania dwuskładnikowego przy próbie zalogowania do routera Synology RT2600AC
Prośba o podanie kodu uwierzytelniania dwuskładnikowego przy próbie zalogowania do routera Synology RT2600AC

czwartek, 17 grudnia 2020

PowerShell: Poszukiwanie pliku według zadanej sumy kontrolnej

Mawia się, że potrzeba matką wynalazków, tak więc potrzebą moją było znalezienie na dysku pewnego pliku o określonej sumie kontrolnej. Pewnie są do tego narzędzia, pewnie nawet za darmo, ale jakoś tak bardzo nie chciało mi się szukać po Internecie, że napisałem sobie jednolinijkowca w PowerShellu. 

Wygląda jak poniżej:

Get-Childitem -File -Recurse -LiteralPath "c:\Windows\System32" -Force -ErrorAction SilentlyContinue | ForEach {if ((get-filehash -path $_.FullName -Algorithm MD5 -ErrorAction SilentlyContinue).Hash -eq "5DA8C98136D98DFEC4716EDD79C7145F") {Write-Host "This file has searched control sum:" $_.FullName}}

Miejsca zaznaczone na czerwono można dopasować do własnych potrzeb, czyli: 

  • ścieżkę folderu do przeszukania (działa rekursywnie). Można też podać cały dysk, ale wtedy będzie odpowiednio dłużej. 
  • algorytm. W powyższym przykładzie jest to MD5, ale można wybrać jeden z poniższych: 
    • SHA1, 
    • SHA256, 
    • SHA384, 
    • SHA512,
  • suma kontrolna poszukiwanego pliku.
Ważne!
Powyższy kawałek kodu nie sprawdzi plików, które są otworzone, bądź zablokowane.
Tak więc, kto zgadnie jaki plik powinna zwrócić powyższa komenda? :)

piątek, 6 listopada 2020

Powershell: obcinanie numeru portu z adresu IP

Gdy otrzymacie plik zawierający adresy IP z portami, które chcecie usunąć (np. 123.123.123.123:80), wystarczy użyć do tego poniższej komendy powershella:

Get-Content plik_zrodlowy.txt | ForEach-Object {$_ -replace ":\d+$","" } | out-file plik_wyjsciowy.txt

Wynikiem będzie plik wyjściowy zawierający wyłącznie adresy IP, już bez numerów portów. 

wtorek, 1 września 2020

Powershell: lista zainstalowanych dysków / pendrajwów

W celu wylistowania zainstalowanych dysków twardych oraz pendrajwów można użyć poniższej komendy Powershella:

Get-CimInstance -class Win32_DiskDrive -property * | select-object InterfaceType, Model, @{Name="Pojemnosc"; Expression={$_.Size / 1024MB}}, SerialNumber

Wynik powinien prezentować się jak poniżej:

Lista dysków / pendrajwów wylistowana przy pomocy Powershella

Polecam uwadze pewną ciekawostkę. Można by sądzić, że na powyższej liście dyski twarde od pendrajwów można odróżnić po użytym interfejsie. W końcu widać tam 2 urządzenia z interfejsem USB, więc są to zapewne pendrajwy. Pozostałe zaś, to pewnie dyski twarde. 

Tak nie jest. Pendrajwem jest także urządzenie Corsair Voyager GTX, które ma przypisany interfejs SCSI. Jest to pendrajw o pojemności aż pół terabajta (z jego testem możecie zapoznać się tutaj).

Piszę o tym ponieważ gdyby ktoś miał potrzebę wyfiltrowania powyższych wyników w celu wyświetlenia np. wyłącznie pendrajwów, to filtrowanie z użyciem interfejsu nie będzie tutaj najlepszym rozwiązaniem. 

piątek, 21 sierpnia 2020

Pendrajw Corsair Voyager GTX USB 3.1 512GB - szybki jak SSD


Corsair Voyager GTX 512 GB - zdjęcie producenta
Corsair Voyager GTX 512 GB - zdjęcie producenta

W moje ręce trafił dzisiaj pendrajw Corsair Voyager GTX 512 GB, więc opiszę go w kilku słowach. Może komuś się przyda, bo nie jest to tania zabawka. 

Przejdźmy więc do rzeczy. 

niedziela, 14 czerwca 2020

Kopiowanie plików ze zdalnej maszyny Windows przy użyciu PowerShella

Czasami zachodzi potrzeba skopiowania plików ze zdalnej maszyny z systemem Windows przy użyciu innego rodzaju połączenia niż SMB, tudzież schowek Pulpitu Zdalnego. 

Wtedy można skorzystać np. z PowerShella. 

A jak się to odbywa?

Tak więc, kopiowanie odbywa się w dwóch etapach:
  1. Utworzenie sesji do zdalnej maszyny, czyli utworzenie połączenia, które potem zostanie wykorzystane. Samo utworzenie sesji niczym nie skutkuje, poza tym, że możemy skorzystać z tak utworzonej sesji w innych poleceniach.
  2. Właściwe kopiowanie plików z wykorzystaniem sesji utworzonej w pkt 1.
Tak to wygląda w teorii, a poniżej praktyka z komendami i komentarzami.