• Historia: Wykonuję skrypt Powershell, aby utworzyć użytkownika z określonej tabeli zawierającej listę użytkowników i umieścić je w określonej organizacyjnej.

  • Problem: Na końcu skryptu chciałbym mieć raport, aby wymienić, czy istnieje jeden lub wiele konta użytkownika niepełnosprawnych AMOUNG nowo utworzone konto

W moim skrypcie muszę wprowadzić hasło dla każdego użytkownika, ale mogę wprowadzić hasło, które nie spełniają polityki hasła zdefiniowanego w Active Directory; W tym przypadku konto zostanie utworzone, ale wyłączone.

Kontynuować, próbowałem:

dsquery user "ou=sp,dc=mydomain,dc=local" -disabled

I drukuje mnie:

"CN=user1,OU=SP,DC=mydomain,DC=local"
"CN=user2,OU=SP,DC=mydomain,DC=local"
"CN=user3,OU=SP,DC=mydomain,DC=local"
  • Mój cel: Chciałbym wyodrębnić zmienną wartości w polu "CN", aby porównać je z inicjalną tabelą użytkownika w moim skrypcie.

    dsquery user "dc=mydomain,dc=local" -disabled | where-object {$_.CN -ne $null}
    

Lub

dsquery user "dc=mydomain,dc=local" -disabled | where-object {$_.Common-Name -ne $null}

Ale to nie pomogło (nie działa). Jak mogę postępować?

0
Solid.Snake 17 luty 2017, 16:02

2 odpowiedzi

Najlepsza odpowiedź

Nie jest testowany - tylko "z mojego umysłu"

$csvData = Import-Csv 'UserList.csv' -Delimiter ';' -Encoding UTF8
$userList = dsquery user "ou=sp,dc=mydomain,dc=local" -disabled
$listOfDisabledAccounts = @()
foreach ($user in $userList)
{
    if ($csvData.Name -contains (($user -split ',')[0] -replace 'CN=',''))
    {
        $listOfDisabledAccounts += $csvData.Name
    }
}

$listOfDisabledAccounts
0
Kongsted 17 luty 2017, 13:26

dsquery nie jest cmdlet PowerShell, ale wykonywalna. Oznacza to, że nie zamierza zwrócić obiektów PowerShell do rurociągu. Metoda Kongstead działa z wiedzy, że zwraca wyjście ciągów. Manipulowanie łańcuchem za pomocą split i replace można uzyskać produkcję do czegoś użytecznego do celów. Pozostałe dwie metody, aby uzyskać te informacje, byłyby użycie modułu reklamowego (z RSAT na Desktop OsS) i Metody ADSI z .NET. Obaj zwracająby dane, które byłyby bezpośrednio użyteczne.

Cmdlets reklamy byłyby najłatwiejsze. Aby uzyskać wszystkie niepełnosprawne konta wyglądać na coś takiego:

Search-ADAccount -AccountDisabled -SearchBase "dc=mydomain,dc=local"
0
BenH 17 luty 2017, 14:47