Folosirea HashTables în Powershell

Un hashtable este o structură de date care stochează perechi cheie-valoare și permite accesul foarte rapid la date prin utilizarea unei funcții hash pentru a calcula un index în un array în care este stocată valoarea. Acest indice acționează ca o cheie pentru a localiza rapid valoarea corespunzătoare.

Hashtables în PowerShell sunt un tip special de date care stochează colecții de perechi cheie-valoare, unde fiecare cheie este asociată cu o anumită valoare. Acest tip de date mai este denumit și dicționar sau array asociativ. La baza lor, tabelele hash sunt structuri de date compacte pentru stocarea perechilor de chei și a valorilor acestora. HashTables sunt similare cu dicționarele în format Python sau JSON.

Hashtables sunt mai flexibile și diferă semnificativ de array-urile PowerShell clasice. Pe măsură ce elementele sunt adăugate în array, fiecare element este indexat automat cu o valoare numerică. În schimb, atunci când utilizați un hashtable PowerShell, trebuie să specificați o cheie pentru fiecare valoare pe care doriți să o adăugați.

Cum functionează?

  1. O funcție hash ia o cheie și o convertește într-un cod hash numeric.
  2. Acest cod hash este apoi mapat la un index într-un array(adesea prin luarea modulului cu dimensiunea array-ului).
  3. Valoarea asociată cu cheia este stocată în matrice la acest index.
  4. Atunci când se caută o valoare, cheia este hașurată din nou pentru a găsi indexul, permițând recuperarea rapidă, de obicei în timp constant O(1).
[mai mult...]

Utilizarea comenzii cURL în PowerShell

cURL(Client URL) este un instrument clasic de linie de comandă *nix pentru lucrul cu cererile URL. Acesta permite trimiterea de cereri HTTP/HTTP, descărcarea sau trimiterea unui fișier către server, accesarea API, autentificarea la un serviciu web etc.

Este frecvent ca utilizatorii Windows să confunde comanda cURL cu cmdlet-ul Invoke-WebRequest. Problema este că, înainte de PowerShell Core 6.x, comanda cURL din PowerShell era un alias pentru cmdlet-ul Invoke-WebRequest.

În PowerShell Core 6.x și 7.x, comanda cURL rulează instrumentul C:\Windows\system32\curl.exe. Începând cu Windows 10 1803 și Windows Server 2019, comanda curl.exe este disponibilă implicit(pentru versiunile anterioare de Windows, puteți descărca manual cURL de la următorul link https://curl.se/windows/).

Pentru a verifica daca curl este instalat si pentru a verifica versiunea:

curl -V

Dacă nu funcționeaza sau vi se solicită parametrii suplimentari, folositi următoarea comandă în Powershell:

Remove-Item Alias:\curl

Sintaxa cmdletului Invoke-WebRequest și a utilitarului cURL.exe sunt foarte diferite. Dacă sunteți obișnuit să utilizați comanda cURL într-un mediu Linux, s-ar putea să vi se pară dificil să traduceți comenzile familiare în sintaxa PowerShell.

[mai mult...]

Explicarea ordinii sau ierarhiei de procesare a politicilor de grup

Atunci când legați obiectele de politică de grup (GPO) de containerele de utilizatori și/sau computere din Active Directory, este important să înțelegeți ordinea în care acestea sunt procesate. Vom analiza conceptele privind domeniul de aplicare și precedența politicilor de grup în domeniile AD. Prioritatea unui GPO este determinată de ordinea în care acesta este aplicat – cu cât o politică este aplicată mai târziu, cu atât prioritatea sa este mai mare.

Atunci când descrieți domeniul de aplicare al politicilor de grup, trebuie să vă amintiți acronimul important LSDOU. LSDOU este o regulă mnemonică care facilitează memorarea ordinii în care sunt procesate politicile de grup:

L (Local GPO) – Local Group Policy Object este cel mai mic nivel de prioritate permite configurarea și aplicarea unor setări specifice numai pentru computerul local (utilizator).
S (Site GPO) – se aplică tuturor obiectelor dintr-un anumit site Active Directory.
D (Domain GPO) – se aplică la nivelul rădăcinii domeniului pentru toate obiectele din cadrul domeniului
OU (Organizational Unit GPO) – este cel mai înalt nivel de prioritate și se aplică unui anumit OU din cadrul unui domeniu. GPO atribuit unui OU cuib(copil) are o prioritate mai mare decât GPO atribuit unui OU părinte.

[mai mult...]

Gestionarea permisiunilor pe foldere cu PowerShell pe Exchange

În Exchange Server On-Premise și Exchange Online(Microsoft 365), este posibil să se acorde acces la mailbox-ul altui utilizator atât la nivelul căsuței, cât și la nivelul folderului individual. Utilizatorul sau administratorul poate selecta folderele cutiei poștale și drepturile de acces care ar trebui să fie disponibile pentru alți utilizatori.

Utilizatorii pot acorda acces la cutia lor poștală din interfața Outlook on the Web(OWA) sau din clientul desktop Outlook.

[mai mult...]

Cum eliberați (resetați) portul COM în uz în Windows

Atunci când conectați un nou dispozitiv COM, USB sau Bluetooth la computer, Windows atribuie dispozitivului primul număr de port COM liber disponibil de la 1 la 256 (COM1, COM2, COM3 etc.).

Chiar și după deconectarea dispozitivului, numărul de port COM atribuit nu este eliberat și rămâne rezervat pentru dispozitiv (Windows îl afișează ca fiind „în uz”). Unele aplicații moștenite pot utiliza numai numere mici de port COM de la 1 la 9. Pentru ca o astfel de aplicație și un dispozitiv să funcționeze corect, trebuie să modificați numărul portului COM atribuit sau să eliberați complet porturile COM rezervate utilizate de alte aplicații.

[mai mult...]

Cum găsiți conturi de servicii utilizate în Active Directory

Managed Service Account (MSA) este un tip special de cont de administrare a domeniului în Active Directory care este utilizat pentru a rula sarcini privilegiate specifice, servicii și lucrări în fundal. Principalele beneficii ale conturilor MSA sunt gestionarea automată a parolelor, gestionarea SPN(Service Principal Name) și capacitatea de a delega gestionarea altor administratori.

Există o serie de tipuri diferite de conturi de servicii disponibile în Active Directory, în funcție de versiunea schemei AD:

  • Service Managed Account(MSA) – este un cont de serviciu de sine stătător care poate fi utilizat numai pe un singur server. Conturile MSA au o clasă de obiect msDS-ManagedServiceAccount și sunt disponibile începând cu nivelul funcțional al domeniului Windows Server 2008 R2.
  • Group Management Service Accounts(gMSA). Aceste conturi pot fi utilizate pe mai multe servere simultan și sunt concepute pentru medii grupate. Clasa lor de obiect este msDS-GroupManagedServiceAccount(disponibilă în Windows Server 2012+).
  • Delegated Managed Service Account(dMSA) este o nouă clasă de conturi de servicii introdusă în Windows Server 2025. Aceste conturi sporesc securitatea prin valorificarea identității mașinii și utilizarea Credential Guard (Credential Guard este o caracteristică de securitate din Windows Server care utilizează securitatea bazată pe virtualizare (VBS) pentru a proteja credentialele utilizatorilor de furt, în special de atacuri precum pass-the-hash și pass-the-ticket).
[mai mult...]

Adăugarea permisiunilor de calendar în Microsoft 365 și Exchange cu PowerShell

Gestionarea permisiunilor calendarului în Exchange

Calendarul într-o căsuță Microsoft 365 și Exchange Server este un dosar de sistem preconfigurat care este afișat într-o vizualizare specială a calendarului în Outlook sau OWA. Utilizatorii dintr-o organizație Exchange pot vizualiza, crea sau edita elemente în calendarele altor utilizatori dacă li s-a acordat permisiunea de a le accesa. În mod implicit, utilizatorii pot vizualiza doar informațiile Free/Busy în calendarele altor utilizatori.

Fiecare utilizator poate acorda și revoca permisiuni pentru calendarul său altor utilizatori din interfața clientului Outlook. Cu toate acestea, administratorul nu poate utiliza interfețele web Exchange Admin Center sau Microsoft 365 Admin Portal pentru a gestiona permisiunile calendarului utilizatorilor. Următoarele comenzi PowerShell pot fi utilizate pentru a gestiona permisiunile pentru Calendar(și alte foldere ale căsuței):

Get-MailboxFolderPermission – listează permisiunile curente pentru calendar;
Add-MailboxFolderPermission – acordă permisiuni de calendar unui utilizator sau grup;
Set-MailboxFolderPermission – modifică permisiunile existente;
Remove-MailboxFolderPermission – elimină permisiunile calendaristice;
Get-MailboxCalendarFolder – obține informații despre folderul calendarului.

[mai mult...]

Cum rezolvați eroarea de trimitere în Outlook “This message could not be sent. The client operation failed. Try sending the message again later”

Deseori această eroare este întâmpinată atunci când se trimite de pe altă căsuță sau de pe un shared mailbox(căsuță partajată).

Trimiterea de mesaje din shared mailbox Exchange este standard pentru întreprinderi. Utilizatorii se pot confrunta cu eșecuri de livrare a e-mailurilor atunci când trimit mesaje ca o altă căsuță , cu următoarele exemple de rapoarte NDR (non-delivery report):

În cazul unei căsuțe obișnuite:

This message could not be sent. Try sending the message again later, or contact your network administrator. Error is [0x80070005-00000000-00000000].

În cazul unei căsuțe de tip shared mailbox(căsuță partajată):

This message could not be sent. You do not have the permission to send the message on behalf of the specified user. Error is [0x80070005-00000000-00000000].

Iată câteva recomandări de depanare și soluții de încercat.

[mai mult...]