milligan
01-07-2014, 14:46
Это снова я)
Итак мой скрипт на синхронизацию контактов Exchange
Param(
[string] $csv
)
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$zz = 0
$z = $zz
$string = $_.OU
Import-Csv $csv | ForEach-object -process `
{`
$EEA = $_.E
$name = $_.A
try {New-MailContact `
-ExternalEmailAddress $EEA `
-Name $_.N `
-Alias $_.A `
-FirstName $_.FN `
-Initials $_.I `
-LastName $_.LN `
-OrganizationalUnit $_.OU -WarningAction SilentlyContinue -ErrorAction Stop | Set-MailContact -CustomAttribute11 $_.D -WarningAction SilentlyContinue; Write-Host $name "......Create" -ForegroundColor Green; $z = $zz + 1}
catch {
if($_.CategoryInfo.Reason -eq "ADObjectAlreadyExistsException") {
Get-Contact $name
Get-ADOrganizationalUnit -Filter 'name -eq "domen.ru/Контакты/еще/чтото/аВотПоследнееМнеНужно"'
if((Get-Contact $name).WindowsEmailAddress -ne $EEA){
Set-MailContact -Identity $name -ExternalEmailAddress $EEA;Write-Host $name -ForeGround Magenta;Write-Host "................Already Exists, BUT not Actual....Replace Email" -ForegroundColor Red}
if((Get-Contact $name).WindowsEmailAddress -eq $EEA){
Write-Host $name -ForeGround Magenta;Write-Host "................Already Exists and Actual" -ForegroundColor Green}
if((Get-Contact $name).OrganizationalUnit -ne $_.OU){Move-ADObject (Get-Contact $name).Guid -TargetPath (Get-ADOrganizationalUnit $аВотПоследнееМнеНужно).ObjectGUID}
}
}
}
В csv файлике OU вида domen.ru/Контакты/еще/чтото/аВотПоследнееМнеНужно, тоесть нужно спарсить содержимое строке после последнего знака "/"
Итак мой скрипт на синхронизацию контактов Exchange
Param(
[string] $csv
)
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$zz = 0
$z = $zz
$string = $_.OU
Import-Csv $csv | ForEach-object -process `
{`
$EEA = $_.E
$name = $_.A
try {New-MailContact `
-ExternalEmailAddress $EEA `
-Name $_.N `
-Alias $_.A `
-FirstName $_.FN `
-Initials $_.I `
-LastName $_.LN `
-OrganizationalUnit $_.OU -WarningAction SilentlyContinue -ErrorAction Stop | Set-MailContact -CustomAttribute11 $_.D -WarningAction SilentlyContinue; Write-Host $name "......Create" -ForegroundColor Green; $z = $zz + 1}
catch {
if($_.CategoryInfo.Reason -eq "ADObjectAlreadyExistsException") {
Get-Contact $name
Get-ADOrganizationalUnit -Filter 'name -eq "domen.ru/Контакты/еще/чтото/аВотПоследнееМнеНужно"'
if((Get-Contact $name).WindowsEmailAddress -ne $EEA){
Set-MailContact -Identity $name -ExternalEmailAddress $EEA;Write-Host $name -ForeGround Magenta;Write-Host "................Already Exists, BUT not Actual....Replace Email" -ForegroundColor Red}
if((Get-Contact $name).WindowsEmailAddress -eq $EEA){
Write-Host $name -ForeGround Magenta;Write-Host "................Already Exists and Actual" -ForegroundColor Green}
if((Get-Contact $name).OrganizationalUnit -ne $_.OU){Move-ADObject (Get-Contact $name).Guid -TargetPath (Get-ADOrganizationalUnit $аВотПоследнееМнеНужно).ObjectGUID}
}
}
}
В csv файлике OU вида domen.ru/Контакты/еще/чтото/аВотПоследнееМнеНужно, тоесть нужно спарсить содержимое строке после последнего знака "/"