I’ve been working the below code and can’t seem to get the Sites to populate into the csv…any help would really be appreciated.
#Import Module
Import-Module ActiveDirectory
#Set Variables
$Domain = (Get-ADDomain).distinguishedname
$OU = "CN=Computers,$Domain"
$Logfile = "C:\Logs\ComputerSiteAssignments.csv"
# Retrieve Site
$GetSite = Get-ADComputer -Filter * -SearchBase $OU -Property * | foreach {
nltest /server:$_.Name /dsgetsite
}
#Get Computer information and format
$Computer = @{}
$Computer = Get-ADComputer -Filter * -SearchBase $OU -Property Name,OperatingSystem,Description,IPv4Address | foreach {
$HostName = $_.Name
$OS = $_.OperatingSystem
$Description = $_.Description
$IP = $_.IPv4Address
$Sites = $GetSite
[PSCustomObject]@{
OU = $OU
Name = $HostName
OS = $OS
Description = $Description
IP = $IP
Site = $Sites
}
}
# Export Logfile to CSV for review
$Computer | Export-Csv $logfile -NoTypeInformation
this may not be the only issue, but try using this command instead
nltest /server:$($_.Name) /dsgetsite
First, I would recommend making your nltest command a function because it’s not a native Powershell command the results might not look like you expect and probably need to be parsed. Luckily, for you, someone had already created a function (link in the function). Also, rather than looping through the computers and manually generating an object, try using calculated properties to get the site information. This is not pseudo-code, not tested, but should be pretty close to what you are looking for:
function Get-ComputerSite($ComputerName){
#http://www.powershellmagazine.com/2013/04/23/pstip-get-the-ad-site-name-of-a-computer/
$site = nltest /server:$ComputerName /dsgetsite 2>$null
if($LASTEXITCODE -eq 0){ $site[0] }
}
#Import Module
Import-Module ActiveDirectory
#Set Variables
$Domain = (Get-ADDomain).distinguishedname
$OU = "CN=Computers,$Domain"
$Logfile = "C:\Logs\ComputerSiteAssignments.csv"
$Computer = Get-ADComputer -Filter * -SearchBase $OU -Property Name,OperatingSystem,Description,IPv4Address |
Select Name,
OperatingSystem,
Description,
IPv4Address,
@{Name="ADSite";Expression={Get-ComputerSite -ComputerName $_.Name}}
$Computer | Export-Csv $logfile -NoTypeInformation
It’s also in here.
HKLM:\SYSTEM\CurrentControlSet\services\Netlogon\Parameters