Powershell i blokada kont#

Przyszła lista kont do zablokowania, oczywiście w formacie .xls.  Jako ze konta powinny być blokowane jak najszybciej, a osoba która sie tym zajmuje ma dzisiaj wolne, na mnie spadł ten obowiązek.

Na początku trzeba było dodać nagłówki do kolumn w excelu, a następnie wyeksportować wynik do pliku .csv.

Następnie w ciągu 3h napisałem taki skrypcik

#configuration

$lista = Import-Csv blokada.csv
$studentOU="OU=studenci,DC=pjwstk,DC=edu,DC=pl"
$data=get-date -format g
$comment="[blocked "+$data+"by PeKi script(dziekanat)]"
$logname = "log";
$logname += get-date -format "yyyyMMdd_hhmmss";
$logname +=".log";

#processing
$log=@();
$notFoundLog=@();
$alreadyDisabled=@();
$l=0
$k=0;
foreach ($user in $lista)
{
$l++;
$stud="LDAP://CN=s"+$user.Album+","+$studentOU;
if ([DirectoryServices.DirectoryEntry]::Exists($stud))
{
$de = new-object DirectoryServices.DirectoryEntry($stud);
$uac=$de.userAccountControl;
$iuac=[int]$uac.toString();
if (($iuac -band 2) -eq 0 )
{
$iuac+=2;
$deLastName=$de.InvokeGet("LastName");
$k++;
$deFirstName=$de.InvokeGet("FirstName");
$deCommonName=$de.InvokeGet("cn");
$deComment=$de.InvokeGet("comment");
$deDescription=$de.InvokeGet("Description");
$date = get-date -format g;
$deComment=$deComment+$comment;
$deDescription=$comment+$deDescription;
$log+= $deCommonName+" "+$deLastName +" " +$deFirstName +" ";

$de.InvokeSet("comment",[string]$deComment);
$de.InvokeSet("Description",[string]$deDescription);
$de.InvokeSet("userAccountControl",[int]$iuac);
$de.CommitChanges();
$de.close();
}
else
{
$alreadyDisabled+= "disabled:"+$user.Album +"uac: " +$uac;
}
}
else
{
$notFoundLog+= "not found:"+$user.Album +" cn: " +$stud ;
}
}

#output
echo "dobrych"| out-file $logname -Append
$log| out-file $logname -Append
echo "zlych"| out-file $logname -Append
$notFoundLog| out-file $logname -Append
$alreadyDisabled| out-file $logname -Append
echo "prztworzonych" $k " z " $l| out-file $logname -Append


write-host "dobrych";
$log
write-host "zlych";
$notFoundLog
$alreadyDisabled
write-host "prztworzonych" $k " z " $l;

Z ciekawszych rzeczy w tym skrypcie widać:

  • deklarację ($param=@()) i zapisywanie do tablicy ($param+="wartosc")
  • porównywanie bitowe za pomocą -band
  • wywołanie statycznej procedury za pomocą [sciezka.do.klasy]::procedura()
  • zapisywanie do pliku za pomocą out-file
Tuesday, May 23, 2006 3:27:58 PM (Central European Standard Time, UTC+01:00) #    Comments [0]  |  Trackback

 

All content © 2010, Krzysztof Pietrzak
On this page
This site
Calendar
<July 2010>
SunMonTueWedThuFriSat
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567
Archives
Sitemap
Blogroll OPML
  Tokyo by night
blog WiTa
  W-Files
blog n€x¤Ra
 .:fotoblog:.
blog Kfaza
 \\archon\blog$
blog archona
 Czasowstrzymywacz
Blog Fookyego
 Jog Pstryka
Jog Pstryka
 Mac OS X vs. Active Directory
techniczny blog kfaza

Maps
Locations of visitors to this page