Combine Get-ADComputer, Get-ADuser .. and optimalize the script


hello,
need optimize script

it should select computer ad, select attribute managedby , each user in managedby  it should search mail,telephonenumber...  

it working, got errors when managedby attribute empty - because get-aduser requires identity..

output should looks like:

name          managedby   telephonenumber
p011w7       user1          +420 123 456 789
p012xp                                                   <=  (computer account empty managedby attribute.. )
p013xp        user2          +420 558 555 555

also, dont know if quering multiple times cmdlet get-aduser efficient.   if run script 4000 computer accounts, each account quering 3+  get-aduser ... slow. ideas how optimize that? 

thanks

$computerlist = get-adcomputer -filter {(name -like "p*") -or (name -like "n*")} -properties * | ?{$_.operatingsystem -notlike "*server*"} | select name,@{n="managedby";e={($_.managedby -split ",*..=")[1]}}  $output = @()  foreach ($pc in $computerlist) {  $myobject = new-object psobject -property @{  pcname = $pc.name  managedby = $pc.managedby  userenabled = (get-aduser -identity $pc.managedby).enabled  primarysmtp = (get-aduser -identity  $pc.managedby -properties *).mail  phone = (get-aduser -identity  $pc.managedby -properties * ).telephonenumber  }  $output += $myobject  }  $output

$computerlist = get-adcomputer -filter {(name -like "p*") -or (name -like "n*") -and operatingsystem -notlike "*server*" } -properties managedby | group managedby  $output = @() foreach ($pc in $computerlist) { 	$user = [adsi]"ldap://$($pc.name)"  	$pc.group | foreach { 		$output += new-object psobject -property @{ 			pcname = $_.name 			managedby = $(if($_.managedby) {$user.name}) 			userenabled = $(if($_.managedby){![bool]($user.useraccountcontrol.value -band 2)}) 			primarysmtp = $(if($_.managedby){$user.mail}) 			phone = $(if($_.managedby){$user.telephonenumber}) 		} 	} }










Windows Server  >  Windows PowerShell



Comments

Popular posts from this blog

2008 Windows Deployment Server Properties Error

Can no longer user MS Update - Files required to use Microsoft Update are no longer registered

How do a find data in one file, search for it in another file and if not found, write a custom message to another file