Чисто ошибка, вероятно, вызвана расширением строки, заключив в одинарные кавычки $UserName
, например:
Get-ADUser -Filter "SamAccountName -eq '$Username'" # and the rest of the parameters...
Однако я должен указать, что вам обычно не нужен параметр фильтра с samAccountName. JUst сделайте что-нибудь вроде:
Get-ADUser $UserName # and the rest of the parameters...
Также -Whatif
указано несколько раз в команде Set-ADUser. Это вызовет проблемы после того, как вы решите текущую проблему.
Вам следует избегать всех этих обратных тиков. Вместо этого используйте разбрызгивание. Вот пример непроверенного сплаттинга:
# Updates AD user attributes from CSV file
$credential = Get-Credential
# Load data from file.csv
$ADUsers = Import-csv file_location
# Count variable for number of users update
$count = 0
# Go through each row that has user data in the CSV we just imported
ForEach($User in $ADUsers)
{
# Ppopulate hash table for Get-ADUser splatting:
$GetParams =
@{
Identity = $User.Username
Server = '127.0.0.1'
Credential = $Credential
}
# Initialize hash table for Set-ADUser splatting:
$SetParams =
@{
Server = '127.0.0.1'
Identity = $User.Username
Title = $User.Title
Office = $User.Office
Description = $User.Description
Credential = $Credential
}
# Check to see if the user already exists in AD. If they do, we update.
if ( Get-ADUser @GetParams)
{
# Set User attributes
Set-ADUser @SetParams -WhatIf
# Print that the user was updated
Write-Host -ForegroundColor Yellow "$User - User attributes have been updated."
# Update Count
$count += 1
}
}
# Print the number of updated users
Write-Host $count "Users have been updated" -ForegroundColor Green
Обратите внимание, что это не обязательно то, как я бы sh завершил код. Есть так много способов делать что-то, и многое зависит от личных предпочтений et c ... В этом случае я ограничиваю модификации вашего исходного примера, чтобы продемонстрировать только определенные моменты, такие как сплаттинг. Когда, где и почему реализовать, зависит от вас.
Другой вопрос, о котором вы, возможно, захотите подумать, - насколько надежным вам нужен этот или любой другой сценарий. Вам нужна обработка ошибок? Вы хотите сообщить, когда пользователь в файле CSV не найден в AD (что само по себе будет отображать ошибку)? Вам нужен файл журнала? Это разовое усилие или что-то, что будет длиться годами? c ...
В любом случае, я надеюсь, что дополнительный пример будет вам полезен. Дай мне знать, как дела. Рада работать с вами и дальше.