Jakiś czas temu na łamach tej strony opisałem sposób tworzenia oraz modyfikowania w systemie lokalnych grup oraz kont przy wykorzystaniu polecenia net user, wywoływanego za pomocą wiersza poleceń (cmd). W tej części artykułu chciałbym rozwinąć ów temat o polecenia PowerShell.

Naszą przygodę rozpoczniemy od dwóch rzeczy. Pierwszą z nich będzie wywołanie  okna aplikacji Windows PowerShell z uprawnieniami administratora.

Wywołanie aplikacji Windows PowerShell w systemie Windows 10.

Wywołanie aplikacji Windows PowerShell w systemie Windows 10.

Dodatkowo wpisując lusrmgr.msc wywołujemy przystawkę Użytkownicy i grupy lokalne, która pomoże nam zweryfikować, czy wykonane przez nas czynności zostały zaimplementowane w systemie.

Wywołanie przystawki „Użytkownicy i grupy lokalne”.

Wywołanie przystawki „Użytkownicy i grupy lokalne”.

Mając wywołane te dwa okna przechodzimy do sedna. Poleceniem:

$ComputerName = "localhost"
$UserAccountName = "nazwa_użytkownika"
$Computer = [ADSI]"WinNT://$ComputerName,computer"
$User = $Computer.Create("User", $UserAccountName)
Write-Host "Użytkownik o nazwie $UserAccountName został utworzony."
$User.SetInfo()

tworzymy w systemie pierwsze lokalne konto użytkownika. W tym przykładzie utworzymy konto o nazwie soisk.pl zatem nasze polecenie będzie wyglądało następująco:

$ComputerName = "localhost"
$UserAccountName = "soisk.pl"
$Computer = [ADSI]"WinNT://$ComputerName,computer"
$User = $Computer.Create("User", $UserAccountName)
Write-Host "Użytkownik o nazwie $UserAccountName został utworzony."
$User.SetInfo()

Tworzenie użytkownika w systemie Windows 10 poleceniem PowerShell.

Tworzenie użytkownika w systemie Windows 10 poleceniem PowerShell.

Konto użytkownika zostało utworzone. Potwierdzamy poprawne wykonanie polecenia zaglądając do przystawki Użytkownicy i grupy lokalne.

Podgląd utworzonego konta za pomocą przystawki „Użytkownicy i grupy lokalne”.

Podgląd utworzonego konta za pomocą przystawki „Użytkownicy i grupy lokalne”.

skrypt do pobrania:

Wybieramy konto soisk.pl i otwieramy jego właściwości.

Właściwości utworzonego konta soisk.pl

Właściwości utworzonego konta soisk.pl

Na powyżej załączonym obrazku dostrzegamy, że zawartość kolumny Opis jest pusta. Warto w niej umieścić dodatkowe info o koncie. Do tego celu stosujemy polecenie:

$UserAccountName = "nazwa_konta_które_otrzyma_opis"
$Description = "Zawartość_kolumny_Opis"
$User=[adsi]"WinNT://./$UserAccountName,user"
$User.Description ="$Description"
Write-Host "Opis do konta $UserAccountName został dodany."
$User.SetInfo()

My dla konta o nazwie soisk.pl utworzymy opis: Nowe konto użytkownika systemu Windows 10. zatem w oknie Windows PowerShell wydamy polecenie:

$UserAccountName = "soisk.pl"
$Description = "Nowe konto użytkownika systemu Windows 10."
$User=[adsi]"WinNT://./$UserAccountName,user"
$User.Description ="$Description"
Write-Host "Opis do konta $UserAccountName został dodany."
$User.SetInfo()

Dodanie opisu do utworzonego wcześniej konta.

Dodanie opisu do utworzonego wcześniej konta.

Także i tym razem weryfikujemy zastosowane polecenie.

Dodanie opisu do utworzonego wcześniej konta.

Dodanie opisu do utworzonego wcześniej konta.

skrypt do pobrania:

Co zrobić jeśli chcielibyśmy odznaczyć opcję Hasło nigdy nie wygasa ? i tym samym wymusić na użytkowniku zmianę hasła podczas następnego logowania.

Odznaczenie opcji Hasło nigdy nie wygasa.

Odznaczenie opcji Hasło nigdy nie wygasa.

nic prostszego, wystarczy wywołać polecenie:

$UserAccountName = "nazwa_konta"
$User=[adsi]"WinNT://./$UserAccountName,user"
$User.UserFlags[0] = $User.UserFlags[0] -bxor 0x10000
Write-Host "Opcja: Hasło nigdy nie wygasa została wyłączona"
$User.SetInfo()

Na potrzeby tego artykułu opcję odznaczymy dla konta soisk.pl więc wdamy polecenie:

$UserAccountName = "soisk.pl"
$User=[adsi]"WinNT://./$UserAccountName,user"
$User.UserFlags[0] = $User.UserFlags[0] -bxor 0x10000
Write-Host "Opcja: Hasło nigdy nie wygasa została wyłączona."
$User.SetInfo()

Odznaczenie opcji Hasło nigdy nie wygasa.

Odznaczenie opcji Hasło nigdy nie wygasa.

Tak jak powyżej, każdy nasz krok weryfikujemy przy pomocy okna Użytkownicy i grupy lokalne.

Odznaczenie opcji Hasło nigdy nie wygasa.

Odznaczenie opcji Hasło nigdy nie wygasa.

skrypt do pobrania:

Ponowne zaznaczenie opcji Hasło nigdy nie wygasa odbywa się poleceniem:

$UserAccountName = "nazwa_konta"
$User=[adsi]"WinNT://./$UserAccountName,user"
$User.UserFlags[0] = $User.UserFlags[0] -bor 0x10000
Write-Host "Opcja: Hasło nigdy nie wygasa została włączona"
$User.SetInfo()

W naszym przypadku brak możliwości wygaśnięcia hasła ustawiamy dla konta soisk.pl więc w tym celu posłużymy się poleceniem:

$UserAccountName = "soisk.pl"
$User=[adsi]"WinNT://./$UserAccountName,user"
$User.UserFlags[0] = $User.UserFlags[0] -bor 0x10000
Write-Host "Opcja: Hasło nigdy nie wygasa została włączona."
$User.SetInfo()

Opcja: Hasło nigdy nie wygasa została włączona.

Opcja: Hasło nigdy nie wygasa została włączona.

Tak samo w tym przypadku warto potwierdzić poprawność wykonanego polecenia.

Opcja: Hasło nigdy nie wygasa została włączona.

Opcja: Hasło nigdy nie wygasa została włączona.

skrypt do pobrania:

Skoro poznaliśmy metodę włączenia oraz wyłączenia opcji hasło nigdy nie wygasa, teraz poleceniem

$UserAccountName = "nazwa_konta"
$Password = "Nowe_hasło"
$User=[ADSI]"WinNT://./$UserAccountName,user"
$User.SetPassword($Password)
Write-Host "Hasło użytkownika $UserAccountName zostało zmienione."

dokonamy zmiany hasła do dowolnego konta użytkownika.  Na potrzeby tego artykułu zmienimy hasło do konta administratora :) Czyli w oknie PowerShell wpisujemy:

$UserAccountName = "Administrator"
$Password = "soisk.pl"
$User=[ADSI]"WinNT://./$UserAccountName,user"
$User.SetPassword($Password)
Write-Host "Hasło użytkownika $UserAccountName zostało zmienione."

zmieniając hasło administratora na soisk.pl

Zmiana hasła konta Administratora systemu przy użyciu polecenia PowerShell.

Zmiana hasła konta Administratora systemu przy użyciu polecenia PowerShell.

Poprawność wykonanego polecenia weryfikujemy poprzez próbę zalogowania się na konto Administratora starym oraz nowym hasłem :)

skrypt do pobrania:

Teraz w systemie Windows 10 utworzymy sobie nową grupę lokalną, do której wrzucimy użytkownika soisk.pl

Dodanie grupy odbywa się poleceniem:

$ComputerName = "localhost"
$LocalGroupName = "nazwa_nowej_grupy_lokalnej"
$Computer = [ADSI]"WinNT://$ComputerName,computer"
$Group = $Computer.Create("group",$LocalGroupName)
Write-Host "Nowa grupa lokalna o nazwie $LocalGroupName została utworzona."
$Group.SetInfo()

My poleceniem:

$ComputerName = "localhost"
$LocalGroupName = "soisk"
$Computer = [ADSI]"WinNT://$ComputerName,computer"
$Group = $Computer.Create("group",$LocalGroupName)
Write-Host "Nowa grupa lokalna o nazwie $LocalGroupName została utworzona."
$Group.SetInfo()

utworzymy nową grupę lokalną o nazwie soisk

Użycie polecenia PowerShell w celu utworzenia nowej grupy lokalnej.

Użycie polecenia PowerShell w celu utworzenia nowej grupy lokalnej.

Brawo. Grupa lokalna o nazwie soisk została utworzona.

Użycie polecenia PowerShell w celu utworzenia nowej grupy lokalnej.

Użycie polecenia PowerShell w celu utworzenia nowej grupy lokalnej.

skrypt do pobrania:

Powyżej wspomnieliśmy o przypisaniu użytkownika do utworzonej grupy w systemie. W celu wykonania tego zadania stosujemy polecenie:

$ComputerName = "nazwa_komputera"
$UserGroupName = "nazwa_grupy"
$UserAccountName = "nazwa_konta"
$User=[adsi]"WinNT://$ComputerName/$UserAccountName,user"
$Group=[adsi]"WinNT://$ComputerName/$UserGroupName,group"
$Group.Add($User.Path)
Write-Host "Użytkownik $UserAccountName został przydzielony do grupy $UserGroupName"

W zmiennej $ComputerName podajemy nazwę komputera, $UserGroupName nazwę istniejącej w systemie grupy, $UserAccountName – nazwę użytkownika, który zostanie przypisany do grupy.

W naszym przypadku poprawna składnia polecenia prezentuje się następująco:

$ComputerName = "soisk-klient"
$UserGroupName = "soisk"
$UserAccountName = "soisk.pl"
$User=[adsi]"WinNT://$ComputerName/$UserAccountName,user"
$Group=[adsi]"WinNT://$ComputerName/$UserGroupName,group"
$Group.Add($User.Path)
Write-Host "Użytkownik $UserAccountName został przydzielony do grupy $UserGroupName"

Przydzielenie użytkownika do istniejącej grupy lokalnej w systemie.

Przydzielenie użytkownika do istniejącej grupy lokalnej w systemie.

Nie mogło być inaczej. Konto soisk.pl stało się pełnoprawnym członkiem grupy lokalnej soisk

Przydzielenie użytkownika do istniejącej grupy lokalnej w systemie.

Przydzielenie użytkownika do istniejącej grupy lokalnej w systemie.

Analogicznie możemy przydzielić konto do grupy administratorów :)

skrypt do pobrania:

Idąc tym tropem pozbawimy konto soisk.pl uprawnień Administratora wydalając go z grupy Administratorzy.

Odebranie użytkownikowi uprawnień Administratora systemu.

Odebranie użytkownikowi uprawnień Administratora systemu.

Efekt ten uzyskamy stosując komendę:

$ComputerName = "nazwa_komputera"
$UserGroupName = "nazwa_grupy"
$UserAccountName = "nazwa_konta"
$User=[adsi]"WinNT://$ComputerName/$UserAccountName,user"
$Group=[adsi]"WinNT://$ComputerName/$UserGroupName,group"
$Group.Remove($User.Path)
Write-Host "Użytkownik $UserAccountName został wydalony z grupy $UserGroupName"

Gdzie zmiennej $ComputerName podajemy nazwę komputera, $UserGroupName nazwę istniejącej w systemie grupy, $UserAccountName – nazwę użytkownika, który zostanie wydalony z istniejącej grupy.

Poprawnie polecenie brzmi następująco:

$ComputerName = "soisk-klient"
$UserGroupName = "Administratorzy"
$UserAccountName = "soisk.pl"
$User=[adsi]"WinNT://$ComputerName/$UserAccountName,user"
$Group=[adsi]"WinNT://$ComputerName/$UserGroupName,group"
$Group.Remove($User.Path)
Write-Host "Użytkownik $UserAccountName został wydalony z grupy $UserGroupName"

Odebranie użytkownikowi uprawnień Administratora systemu.

Odebranie użytkownikowi uprawnień Administratora systemu.

Dla tych co nie wierzą w poprawne wykonanie powyższego polecenia proponuję otworzyć przystawkę Użytkownicy i grupy lokalne.

Odebranie użytkownikowi uprawnień Administratora systemu.

Odebranie użytkownikowi uprawnień Administratora systemu.

skrypt do pobrania:

Nadszedł czas na zmianę nazwy konta. By być w 100% pewnym poprawnie wykonanego polecenia, zmienimy nazwę istniejącego w systemie konta Administratora na Admin.

Zmiana nazwy wbudowanego konta Administratora w systemie Windows 10.

Zmiana nazwy wbudowanego konta Administratora w systemie Windows 10.

Efekt ten uzyskamy stosując polecenie:

$UserAccountName = "Administrator"
$UserNewName = "Admin"
$User=[ADSI]"WinNT://./$UserAccountName,user"
$User.rename("$UserNewName")
Write-Host "Konto o nazwie: $UserAccountName usyskało nowy login: $UserNewName"

Zmiana nazwy wbudowanego konta Administratora w systemie Windows 10.

Zmiana nazwy wbudowanego konta Administratora w systemie Windows 10.

Także i tym razem polecenie zostało wykonane poprawnie, co potwierdza poniżej załączony screen.

Zmiana nazwy wbudowanego konta Administratora w systemie Windows 10.

Zmiana nazwy wbudowanego konta Administratora w systemie Windows 10.

skrypt do pobrania:

Powoli zbliżamy się do końca tego artykułu, zatem tymczasowo wyłączymy jedno z kont.

Wyłączanie dowolnego konta użytkownika w systemie Windows 10.

Wyłączanie dowolnego konta użytkownika w systemie Windows 10.

Do tego celu proponuję zastosować następujące polecenie:

$UserAccountName = "nazwa_konta_które_zostanie_wyłączone"
$User=[adsi]"WinNT://./$UserAccountName,user"
$User.UserFlags[0] = $User.UserFlags[0] -bor 0x2
$User.SetInfo()
Write-Host "Konto o nazwie: $UserAccountName zostało wyłączone."

Oczywiście wyłączamy konto o znajomej nazwie soisk.pl:

$UserAccountName = "soisk.pl"
$User=[adsi]"WinNT://./$UserAccountName,user"
$User.UserFlags[0] = $User.UserFlags[0] -bor 0x2
$User.SetInfo()
Write-Host "Konto o nazwie: $UserAccountName zostało wyłączone."

Wyłączanie dowolnego konta użytkownika w systemie Windows 10.

Wyłączanie dowolnego konta użytkownika w systemie Windows 10.

I tym razem potwierdzamy dokonane przy użyciu polecenia PowerShell wprowadzone zmiany.

Wyłączanie dowolnego konta użytkownika w systemie Windows 10.

Wyłączanie dowolnego konta użytkownika w systemie Windows 10.

skrypt do pobrania:

Ponowna jego aktywacja odbywa się przy użyciu poniższego kodu:

$UserAccountName = "nazwa_konta_które_zostanie_włączone"
$User=[adsi]"WinNT://./$UserAccountName,user"
$User.UserFlags[0] = $User.UserFlags[0] -bxor 0x2
$User.SetInfo()
Write-Host "Konto o nazwie: $UserAccountName zostało włączone"

Czyli:

$UserAccountName = "soisk.pl"
$User=[adsi]"WinNT://./$UserAccountName,user"
$User.UserFlags[0] = $User.UserFlags[0] -bxor 0x2
$User.SetInfo()
Write-Host "Konto o nazwie: $UserAccountName zostało włączone"

Włączanie dowolnego konta użytkownika w systemie Windows 10.

Włączanie dowolnego konta użytkownika w systemie Windows 10.

Wydanie powyższego polecenia ponownie aktywuje konto soisk.pl

Włączanie dowolnego konta użytkownika w systemie Windows 10.

Włączanie dowolnego konta użytkownika w systemie Windows 10.

Zmieniając $UserAccountName = „soisk.pl” na $UserAccountName = „Administrator” możemy włączyć oraz wyłączyć wbudowane konto Administratora systemu.

skrypt do pobrania:

 

Ostatnią czynność jaką wykonamy będzie usunięcie utworzonego wcześniej konta oraz grupy. Oczywiście na pierwszy ogień idzie wcześniej utworzone konto soisk.pl

Usunięcie dowolnego konta użytkownika znajdującego się w systemie Windows 10.

Usunięcie dowolnego konta użytkownika znajdującego się w systemie Windows 10.

Usunięcie odbywa się poprzez wydanie polecenia:

$ComputerName = "nazwa_komputera"
$UserAccountName = "nazwa_usuwanego_konta"
$User=[adsi]"WinNT://$ComputerName"
$User.Delete("user",$UserAccountName)
Write-Host "Konto o nazwie: $UserAccountName zostało usunięte."

U nas będzie ono brzmieć następująco:

$ComputerName = "soisk-klient"
$UserAccountName = "soisk.pl"
$User=[adsi]"WinNT://$ComputerName"
$User.Delete("user",$UserAccountName)
Write-Host "Konto o nazwie: $UserAccountName zostało usunięte."

Usunięcie dowolnego konta użytkownika znajdującego się w systemie Windows 10.

Usunięcie dowolnego konta użytkownika znajdującego się w systemie Windows 10.

Konto zostało usunięte.

Usunięcie dowolnego konta użytkownika znajdującego się w systemie Windows 10.

Usunięcie dowolnego konta użytkownika znajdującego się w systemie Windows 10.

skrypt do pobrania:

Utworzoną i nadal istnejącą w systemie grupę lokalną soisk

Usunięcie istniejącej grupy lokalnej znajdującego się w systemie Windows 10.

Usunięcie istniejącej grupy lokalnej znajdującego się w systemie Windows 10.

usuwamy wydając polecenie:

$ComputerName = "localhost"
$LocalGroupName = 'nazwa_grupy_przeznaczonej_do_usuniecia'
$Computer = [ADSI]"WinNT://$ComputerName,computer"
$Group = [ADSI]"WinNT://$computerName/$localGroupName"
$Computer.psbase.Children.Remove($Group)
Write-Host "Grupa o nazwie $LocalGroupName została usunięta."

Czyli w naszym przypadku polecenie brzmieć będzie następująco:

$ComputerName = "localhost"
$LocalGroupName = 'soisk'
$Computer = [ADSI]"WinNT://$ComputerName,computer"
$Group = [ADSI]"WinNT://$computerName/$localGroupName"
$Computer.psbase.Children.Remove($Group)
Write-Host "Grupa o nazwie $LocalGroupName została usunięta."

Usunięcie istniejącej grupy lokalnej znajdującego się w systemie Windows 10.

Usunięcie istniejącej grupy lokalnej znajdującego się w systemie Windows 10.

Lokalna grupa o nazwie soisk została usunięta

Usunięcie istniejącej grupy lokalnej znajdującego się w systemie Windows 10.

Usunięcie istniejącej grupy lokalnej znajdującego się w systemie Windows 10.

skrypt do pobrania:

To by było na tyle. Jeśli coś pominąłem, poproszę o zaznaczenie tego faktu w komentarzu :)

Tematy pokrewne: