pa
param(
[string]$CSVFile,
[string]$ADAMHost,
[string]$TopDN,
[string]$WhatIf
)
Set-PSDebug -Strict
$SvnId = '$Id: SymantecEve.ps1 20 2010-05-25 06:37:21Z OB $'
$SvnId = [regex]::split($SvnId, ' ')
$MajorVer = '0'
$MinorVer = $SvnId[2]
$Version = "$MajorVer.$MinorVer"
$Usage = @"
SymantecEve (Version: $Version)
Function: to populate an ADAM instance from a CSVFile to be used as a LDAP sync source for Symantec SEPM.
Options:
-CSVFile The csv file to be imported
-ADAMHost The dns/ip of the ADAM host, with optional port eg localhost:389
-TopDN The dn used eg dc=net
-WhatIf This "usage"
"@
function Create-DN([string]$ADDN ){
$ADDNA = $ADDN.split(',')
$ADDNRA = $ADDNA
[array]::Reverse($ADDNRA)
$TestTopDN = $ADDNRA[0]
if ( ! $TestTopDN.Contains($TopDN) ){
return
}
$DN = ''
$Base = ''
foreach ( $aDN in $ADDNRA){
trap [Exception] {
continue
}
if ( $aDN -eq $TopDN ){
$Base = $aDN
continue
}else{
$objDomain = [ADSI]"LDAP://$ADAMHost/$Base"
$objOU = $objDomain.Create("domainDNS", $aDN )
$Base = "$aDN," + $Base
$objOU.SetInfo()
}
}
}
function Create-Computer([string]$ADDN, [string]$DN ){
trap [Exception]{
continue
}
$objDomain = [ADSI]"LDAP://$ADAMHost/$ADDN"
$objOU = $objDomain.Create("Computer", "cn=$CN" )
$objOU.SetInfo()
}
function Create-Group([string]$ADDN, [string]$Group ){
trap [Exception]{
Write-Host $Group
continue
}
$objDomain = [ADSI]"LDAP://$ADAMHost/$ADDN"
$objOU = $objDomain.Create("organizationalUnit", $Group )
$objOU.SetInfo()
}
$ImportObjectS = Import-Csv -Path $CSVFile
$ADDNHash = @{}
foreach ( $ImportObject in $ImportObjects ){
$CN = $ImportObject.CN
$ADDN = $ImportObject.ADDN
if ( (! $ADDN ) -or ( ! $CN ) ){
continue
}
$CN = $CN.ToLower()
$ADDN = $ADDN.ToLower()
if ( ! $ADDNHash.ContainsKey($ADDN) ){
Create-DN $ADDN
$ADDNHash.Add( $ADDN, $ADDN )
}
$Group = $ImportObject.SEPMGroup
if ( $Group.IsPresent ){
$Group = "OU=$Group"
Create-Group $ADDN $Group
$ADDN = "$Group, $ADDN"
}else{
$Group = "OU=Default"
Create-Group $ADDN $Group
$ADDN = "$Group, $ADDN"
}
Create-Computer $ADDN $CN
}