I wrote PowerShell script to automate some of the AD commands. Here is the script.
$usergroup="TACACS Admins"
$computerrole="1626-APPCONF"
$zone="AWS"
$username="<>"
$password="<>";
[String[]] $HostServers ='smp001-01','sl1ps01-13-9';
$ValidatedHostServers = @()
$NotValidatedHostServers = @()
Import-Module ActiveDirectory
Import-Module Centrify.DirectControl.PowerShell
$Password = ConvertTo-SecureString $password -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential($username,$Password)
Set-CdmCredential -Domain <> -Credential $Cred
function Add-HostComputer{
Param($cred,$zone,$computerrole,$ValidatedHostServers)
# Get Computer Role
$GroupName = Get-ADGroup -Identity $computerrole
Write-Output $GroupName
foreach($Host in $ValidatedHostServers)
{
#Get -Member
$DistinguishedName = Get-ADComputer -Identity $Host
Write-Output $ValidatedHostServers
#Add $Hostserver to $comprole computer Role
$Output = Add-ADGroupMember -Identity $GroupName -Members $DistinguishedName -Credential $Cred
}
}
function ValidateHost{
Param($HostServers)
foreach($HostName in $HostServers)
{
try{
$HostOutput = Get-ADComputer -Identity $HostName -ErrorAction SilentlyContinue
$ValidatedHostServers += $HostName
}
catch
{
$NotValidatedHostServers += $HostName
}
}
Write-Host $ValidatedHostServers
$Result = @{"Valid_hosts"=$ValidatedHostServers;"Invalid_hosts"=$NotValidatedHostServers} | ConvertTo-Json -Compress
Write-Host $Result
Write-Host $ValidatedHostServers.Count
If($ValidatedHostServers.Count -ne 0)
{
Write-Host $ValidatedHostServers
Add-HostComputer -Cred $Cred -zone $zone -computerrole $computerrole -
ValidatedHostServers $ValidatedHostServers
}
}
$Final = ValidateHost -HostServers $HostServers
Write-Host $Final
I have tried to write-host the inputs and found $ValidatedHostServers array does not coming as array. May I be I am missing something in syntax.
There are two values in array but
Write-Host $ValidatedHostServers.Count display as 1.
Thanks in advance for helping here.
This is Error displayed in powerShell
smp001-01sl1ps01-13-9
{"Invalid_hosts":[],"Valid_hosts":"smp001-01sl1ps01-13-9"}
1
smp001-01sl1ps01-13-9
Cannot overwrite variable Host because it is read-only or constant.
At line:27 char:9 + foreach($Host in $ValidatedHostServers) + CategoryInfo : WriteError: (Host:String) [], SessionStateUnauthorizedAccessException + FullyQualifiedErrorId : VariableNotWritable
CN=1626-APPCONF,OU=Role Groups-
Computer,OU=Centrify,OU=Operations,DC=qateradatacloud,DC=com