2014-09-04 3 views
0

Я написал очень простой Powershell скрипт для насыпных переименования групп AD, ниже приведен кодPowershell: Outputing Sucess и ошибки

# This script will perform a bulk rename of AD groups. 
# Takes input from a csv file called "ADGroups.csv" with two columns, 
# first column labelled "ObjectGUID" and contains the GUID of the AD Group you wish to rename and 
# the second column is labeled "NewName" and contains the name that you want the group to be renamed to. 
# Outputs results to console and a file called ADGroupBulkRenameLog.txt 

$Groups = Import-Csv ADgroups.csv 

Foreach ($Group in $Groups) 
{ 
    $OldName = Get-ADGroup -Identity $Group.ObjectGUID | Select Name 
    Rename-ADObject -Identity $Group.ObjectGUID -NewName $Group.NewName 
    Set-ADGroup -Identity $Group.ObjectGUID -SamAccountName $Group.NewName 
    Write-Output ($OldName.Name + " has been renamed to " + $Group.NewName) | Tee-Object ADGroupBulkRenameLog.txt -Append 
} 

переименованием часть работает нормально, но часть я у меня возникают проблемы с является выходом , Строки вывода записываются как в файл, так и в консоль, однако, если возникает ошибка (например, новое имя уже существует), ошибка не записывается в файл, и команда записи-вывода все еще выполняется.

Мне было интересно, знает ли кто-нибудь лучший способ сделать это? Конечная цель состоит в том, чтобы выводить на консоль и файл сообщение, если группа была успешно переименована или нет, и продолжить, если она делает ошибку.

Заранее благодарен!

ответ

0

Вы можете, вероятно, переписать ваш Еогеасп петли таким образом:

foreach ($Group in $Groups) 
{ 
    try 
    { 
     $OldName = Get-ADGroup -Identity $Group.ObjectGUID | Select Name 
     Rename-ADObject -Identity $Group.ObjectGUID -NewName $Group.NewName 
     Set-ADGroup -Identity $Group.ObjectGUID -SamAccountName $Group.NewName 
     Write-Output ($OldName.Name + " has been renamed to " + $Group.NewName) | Tee-Object ADGroupBulkRenameLog.txt -Append 
    } 

    catch 
    { 
     Write-Output "Error: $_" | Tee-Object ADGroupBulkRenameLog.txt -Append 
    } 
} 
+0

Wow. Так просто! Это делает именно то, что мне нужно. Я изменил команду write-output error, чтобы добавить имя старой группы AD. Большое спасибо за вашу помощь! Могу ли я просто проверить, что мое понимание команды try/catch верное? Если в блоке try встречается ошибка, она немедленно выпрыгивает и выполняет то, что находится в блоке catch? – PhilB

Смежные вопросы