Extract the filename from a path in Powershell

By Andrei Ungureanu - Last updated: Tuesday, May 8, 2018

Lucrul cu string-uri e dificil cateodata iar unul din task-urile intalnite recent a fost sa extrag numele unui fisier dintr-un path.

De exemplu se da urmatorul string “C:\Data\reports1.csv”. Si task-ul este de a obtine numai numele fisierului din acest string. Bineinteles ca se poate face impartind tot stringul pe baza caracterului \ si citind doar ultima valoare. Dar spre norocul nostru, exista o comanda in Powershell ce face asta nativ si anume Split-Path.

image

Mai sus am pus cateva exemple. Pentru a obtine doar numele fisierului din path trebuie folosit parametrul –Leaf, altfel comanda va afisa doar path-ul, fara numele fisierului.

Pentru mai multe detalli precum si alte scenarii de utilizare a comenzii Split-Path aveti mai jos link-ul catre documentatie:

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/split-path?view=powershell-6

Filed in Scripting • Tags:

Vmware Workstation Shared Folders issue & Windows 10

By Andrei Ungureanu - Last updated: Monday, May 7, 2018

Seems like after every Windows 10 upgrade, the shared folders inside Vmware Workstation VMs stop working. Reinstalling Vmware Tools and rebooting the VM or host will not fix this issue.

The problem seem to be related to this registry key:HKEY_LOCAL_MACHINE\ SYSTEM\CurrentControlSet\Control\NetworkProvider\Order\ProviderOrder

image

The value should contain also vmhgfs and seems to be rewritten after each Windows 10 upgrade. So just add this value and shared folders should start working again (no reboot necessary).

image

Hope this will help other people experiencing this annoying issue.

Filed in Windows Client • Tags:

What is User Access Logging and how to use it

By Andrei Ungureanu - Last updated: Tuesday, April 10, 2018

User Access Logging (zis si UAL) este inca un feature obscur al Windows Server (prezent incepand cu versiunea 2012) necunoscut de majoritatea administratorilor si inca ma mir ca a reusit sa isi faca aparitia si in urmatoarele versiuni de Windows Server.

UAL este un serviciu ce colecteaza date despre utilizarea anumitor componente si vine instalat si activat by default.

image

Puteti controla serviciul din consola services sau cu alte variante din command prompt. Pentru mediile high performance unde stiti ca nu aveti nevoie de asa ceva, puteti sa il opriti (genereaza IO-uri suplimentare si va consuma si spatiu pe disk). Serviciul stocheaza date de pe ultimii doi ani, asa ca intr-un mediu utilizat intens o sa stocheze multa informatie pe disk.

Dar sa vedem si cum putem sa interogam datele stocate de acest serviciu.

Prima comanda ar fi Get-UAL ce ne va spune daca serviciul ruleaza sau nu.

image

Urmeaza Get-UALOverview ce ne arata toate componentele pentru care sunt colectate date de utilizare.

image

Sau mai bine asa:

image

Ce nu apare in lista de mai sus este rolul DNS pentru care exista si o comanda speciala, Get-UALDNS:

image

Pe un sistem de test (in cazul meu) informatiile sunt putin confuze, insa pe un sistem de productie veti putea vedea numele si ip-urile clientilor ce au interogat serverul DNS.

Este o metoda foarte utila de a vedea daca un anumit server de DNS este utilizat si de catre cine (fara a mai folosi Wireshark).

Cu Get-UalDailyAccess putem vedea un raport pe ultimele 24 de ore si il putem filtra sa ne arate doar informatiile necesare (gen doar Active Directory):

image

Dar iata si lista cu toate comenzile disponibile:

Get-UalOverview: Provides UAL related details and history of installed products and roles.

Get-UalServerUser: Provides client user access data for the local or targeted server.

Get-UalServerDevice: Provides client device access data for the local or targeted server.

Get-UalUserAccess: Provides client user access data for each role or product installed on the local or targeted server.

Get-UalDeviceAccess: Provides client device access data for each role or product installed on the local or targeted server.

Get-UalDailyUserAccess: Provides client user access data for each day of the year.

Get-UalDailyDeviceAccess: Provides client device access data for each day of the year.

Get-UalDailyAccess: Provides both client device and user access data for each day of the year.

Get-UalHyperV: Provides virtual machine data relevant to the local or targeted server.

Get-UalDns: Provides DNS client specific data of the local or targeted DNS server.

Get-UalSystemId: Provides system specific data to uniquely identify the local or targeted server.

Ce trebuie sa stiti este ca aceste informatii nu sunt afisate real time (cu toate ca informatiile sunt culese realtime pentru majoritatea serviciilor). Baza de date pe care se fac interogarile este updatata o data la 24 de ore. Se pot face modificari in registry pentru a modifica aceasta valoare si gasiti tot ce va trebuie in documentatia oficiala:

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/jj574126(v%3dws.11)

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/hh849634%28v%3dws.11%29

Filed in Windows Server • Tags:

Cloudflare public DNS service 1.1.1.1

By Andrei Ungureanu - Last updated: Tuesday, April 3, 2018

In ultimul timp se tot leaga subiecte pe tema DNS si uite ca vine o stire utila pentru toata lumea. Mai ales in lumina ultimelor stiri legate de cum sunt folosite datele noastre si de urmele pe care le lasam online.

Enter Cloudflare 1.1.1.1 DNS service.

spraypainted-1.1.1.1

IP-urile v4 pentru noul serviciu de DNS sunt 1.1.1.1 si 1.0.0.1 (exista si v6 si le gasiti pe site-ul lor). Ce ii diferentiaza de Google (8.8.8.8 si 8.8.4.4) este faptul ca nu vor utiliza sau stoca informatiile clientilor iar logurile vor fi sterse la 24 de ore.

Este o miscare in directia potrivita pentru evolutia internetului si recomand utilizarea noilor servere DNS (fiabilitate, performanta, securitate).

Mai multe detalii gasiti in link-urile de mai jos:

https://blog.cloudflare.com/announcing-1111/

https://blog.cloudflare.com/dns-resolver-1-1-1-1/

PS: Acum sa nu credeti ca daca o sa folositi alte servere de DNS, traficul vostru de DNS o sa fie invizibil. Protocolul DNS mai are mult de evoluat si exista initiative (TLS/HTTPS) dar pana o sa le vedem implementate in sistemele de operare comerciale o sa mai dureze.

Filed in Networking • Tags: ,

Azure Private DNS Zones

By Andrei Ungureanu - Last updated: Tuesday, April 3, 2018

Am scris saptamana trecuta despre cum sa iti hostezi o zona DNS pe Azure, dar nu am mentionat varianta in care vrei sa hostezi o zona interna. Pana acum un server DNS de pe o masina onprem sau din cloud cu serviciul DNS instalat se ocupa de asta. Dar putem sa renuntam la in a mai administra un server cu serviciul DNS si putem sa tinem si zonele interne in Azure.

Serviciul se numeste Azure DNS for private domains si pentru ca in momentul de fata este in beta, este free of charge (dupa ce va fi GA atunci probabil va costa).

https://docs.microsoft.com/en-us/azure/dns/private-dns-overview

Il poti folosi acolo unde vrei sa ai rezolutie de nume intre masinile tale din cloud dar fara a mai administra si un server DNS.

DNS overview

Azure private DNS zones este inca in beta, asa ca inca ii mai lipsesc cateva chestii de baza. Daca sunteti integrati si cu un mediu Active Directory on premises atunci nu va recomand (nu puteti face Conditional Forwarding, inca).

Managementul se poate face momentan doar din linie de comanda cu Azure CLI sau Powershell.

Filed in Networking, Windows Azure • Tags: ,

How to use Set-ADUser instance feature

By Andrei Ungureanu - Last updated: Monday, April 2, 2018

Comanda Set-ADUser din modulul Active Directory are o multime de parametri ce pot fi folositi pentru a modifica direct atributele unui user din AD. Dar daca citesti atent documentatia vei observa ca exista un parametru numit –Instance ce schimba total modul de lucru al comenzii. Iar modul asta e util pentru cei familiari cu vechiul mod de operare din VbScript si ADSI. Mai exact lucrezi pe o instanta a obiectului stocata in memorie iar la final scrii schimbarile pe obiectul real din directory.

Prima data trebuie sa obtinem o copie a obiectului pe care dorim sa il modificam. Iar asta o facem cu Get-ADUser. Atentie cafara alti parametri, comanda va aduce doar un subset standard. Daca vrem sa aducem atribute suplimentare, va trebui sa le specificam cu parametrul –Properties (care accepta si * pentru a returna toata atributele):

image

Odata ce am stocat informatiile intr-o variabila locala, putem incerca sa accesam din proprietatile obiectului:

image

Pasul urmator va fi sa modificam o proprietate aflata in memorie iar apoi sa facem modificarea si in AD cu Set-ADUser:

image

Comanda SetAD-User a scris noile modificari in AD si se pot vedea imediat:

image

Filed in Active Directory, Scripting • Tags: , ,

Hosting your DNS zone on Windows Azure

By Andrei Ungureanu - Last updated: Tuesday, March 27, 2018

DNS hosting nu e un subiect nou iar hosting de DNS gasim peste tot. Cateodata chiar si free. Iar unii dintre noi folosesc serverele Windows existente ce sunt vizibile in Internet pentru a-si hosta zonele DNS externe.

Dar ce am observat ca este mai putin cunoscut este faptul ca poti sa iti hostezi zona DNS in Azure. Si este incredibil de simplu. Bineinteles ca nu este gratis. Preturile sunt decente si le gasiti in link-ul de mai jos si o sa pun si o imagine cu preturile de la data scrierii acestui articol:

https://azure.microsoft.com/en-us/pricing/details/dns/

image

Procedura pentru definirea zonei in Azure este urmatoarea. Dupa ce va logati in portalul de management va duceti la sectiunea Networking si de acolo selectati DNS Zones (sau puteti sa alegeti optiunea de Search si sa cautati dupa DNS Zones). Aici alegeti Create DNS Zone.

image

Ce este cel mai important aici este numele zonei. Resource group location nu este prea important pentru ca nameserver-ele oricum sunt distribuite global.

image

Cu un click pe zona puteti vedea detaliile din zona nou creata si puteti adauga noi inregistrari.

image

In partea dreapta sus puteti vedea lista de nameservere. Pe acestea trebuie sa le setati la TLD-ul responsabil de zona voastra. In exemplul meu am adaugat aceste nameservere la ROTLD. Totul a fost functional in aproximativ 5 minute.

Nota: Ce ma deranjeaza la setup-ul zonei este serial-ul din SOA ce nu prea respecta recomandarile. Dar se poate seta de mana cu un click pe SOA.

Filed in Windows Azure • Tags: ,

Windows ignoring specific entries in the HOSTS file

By Andrei Ungureanu - Last updated: Monday, March 26, 2018

Rezolvarea unor nume la adrese IP prin fisierul HOSTS (prezent in %windir%\system32\drivers\etc) este un mecanism arhicunoscut si folosit de fiecare data cand vrem sa facem bypass la metodele de rezolutie de nume externe sau pur si simplu dorim sa blocam accesul la un anumit site (iar unele tipuri de malware folosesc acest mecanism ca sa faca hijack la anumite situri legitime).

Ce nu se stie insa este ca anumite host-uri sunt hardcodate in Windows si oricat am incerca sa folosim noi fisierul HOSTS ca sa redirectam catre un anumit IP, nu va fi posibil.

De exemplu daca incercam sa setam un alt ip pentru update.microsoft.com:

image

Efectiv va fi ignorat:

image

Si asta se va intampla pentru mai multe nume ce sunt considerate critice pentru utilizator si sistemul de operare:

download.microsoft.com

update.microsoft.com

support.microsoft.com

go.microsoft.com

microsoftupdate.microsoft.com

windowsupdate.microsoft.com

msn.com

www.msn.com

Si mai sunt si altele, toate apartinand Microsoft. Asa ca daca incercati sa redirectati catre un alt IP un site Microsoft folosind fisierul HOSTS si nu o sa mearga, acum stiti motivul.

Daca totusi doriti sa blocati accesul catre un astfel de site, puteti incerca sa folositi Windows Firewall.

Filed in Windows Client • Tags:

No more Windows Homegroup starting with Windows 10 build 17063

By Andrei Ungureanu - Last updated: Sunday, March 25, 2018

Daca va numarati printre cei ce incepusera sa foloseasca Windows Homegroup ce a fost introdus incepand cu Windows 7, va asteapta o surpriza in urmatoarea versiune de Windows.

Incepand cu Windows 10 build 17063, aka Spring Creators Update, Homegroup nu va mai fi disponibil. Se pare ca exista un push foarte mare catre cloud si renuntarea la tehnologiile ce inca ne tin legati de stocarea datelor pe sistemele de acasa.

Conform https://blogs.windows.com/windowsexperience/2017/12/19/announcing-windows-10-insider-preview-build-17063-pc/ alternativele ar fi:

File Storage:

OneDrive is a cloud-first, cross-device storage and collaboration platform for all of the pieces of data that matter most in your life – like your files, your photos, your videos, and more.
OneDrive Files On-Demand takes cloud file storage a step further, allowing you to access all your files in the cloud without having to download them and use storage space on your device.

Share Functionality: For those who prefer not to use the Cloud to connect their devices, the Share functionality for folders and printers allows you to see the available devices and connect them to and from other PCs on your home network.
Easier Connection: No more remembering cryptic HomeGroup passwords in order to connect to another PC. You can now simply connect through your Microsoft Account email address across devices.

Pentru un end user, poate doar One Drive e o alternativa simplu de folosit. Sa folosesti un network share pe sisteme standalone poate fi o adevarata provocare cateodata.

Filed in Windows Client • Tags: ,

How to enable SMB Encryption on Windows Shares

By Andrei Ungureanu - Last updated: Friday, March 23, 2018

Transferul intre client si server-ul Windows ce hosteaza un network share este necriptat by default. Iar in scenariile unde se pune accent pe securitatea informatiilor, acest lucru poate fi o problema serioasa. Incepand cu SMB v3 si Windows 2012, exista SMB Encryption. Si toata criptarea asta end to end se poate face printr-un simplu click:

image

In schimb trebuie sa aveti grija la clientii legacy ce nu suporta SMB v3. Daca veti incerca sa accesati un astfel de share cu Windows 7 o sa primiti un mesaj de Access Denied.

SMB Encryption poate fi activat la nivel de share sau la nivelul intregului server. La nivel de share se poate vedea in imaginea de mai sus checkbox-ul responsabil de aceasta setare. A doua varianta (la nivelul intregului server) se activeaza doar din linie de comanda cu Set-SmbServerConfiguration (ce merge impreuna cu Get-SmbServerConfiguration):

image

Optiunea necesara pentru a activa SMB Encryption la nivelul intregului server este EncryptData, iar in cazul meu este pe False pentru a permite compatibilitatea cu clientii legacy. Tot ce trebuie sa faceti este sa schimbati aceasta optiune pe True.

Nota: Din clipa in care setati EncryptData pe True, orice client ce nu stie SMB v3 v-a prima Access Denied cand va incerca sa acceseze serverul prin protocolul SMB. Nu va putea nici macar sa listeze share-urile.

Tot in imaginea de mai sus puteti observa RejectUnencryptedAccess si probabil va intrebati de ce este pe True. Optiunea permite fallback pentru clientii vechi ce nu stiu SMB V3 atunci cand e pe False si face enforcement atunci cand e pe True. Ca un exemplu, daca activam encryption la nivel de share si setam RejectUnencryptedAccess pe False, clientii cu Windows 10 vor putea accesa share-ul conexiunea fiind criptata, iar clientii cu Windows 7 vor face fallback la SMB v2 si vor accesa share-ul necriptat. Tot la fel si cand e activat la nivel de server.

Filed in Windows Client, Windows Server • Tags: ,