Я новичок в powershell и нуждаюсь в помощи с некоторыми ошибками в моем скрипте. Я в основном пытаюсь импортировать всех пользователей из Active Directory и мой сценарий ниже:Импорт пользователей из AD с использованием PowerShell
#Location the CSV file is being saved.
$csvFileLocation = "C:\ADImport\ADImport.csv"
#Verifies that the AD Module is loaded. If it is not, checks if it is available, if it is, loads it.
Function Get-ADModule {
if(-not(Get-Module -Name ActiveDirectory)) {
if(Get-Module -ListAvailable | Where-Object {$_.Name -eq "ActiveDirectory" }) {
Import-Module -Name ActiveDirectory
$true
} else {
$false
}
} else {
$true
}
}
if (Get-ADModule) {
#Creates the CSV Table Format, change the AD DS TableNames to the CoarseMail TableNames
$tableFormat = @{ Expression = { $_.GivenName -replace ","," " };Label = "FirstName" },
@{ Expression = { $_.SurName -replace ","," " };Label = "LastName" },
@{ Expression = { $_.SAMAccountName -replace ","," " };Label = "ID" }
#Gets AD User Objects that are enabled, and only specified properties for perfomance, filters out specified OU's, filters out objects with no first or last name or EmployeeID.
Get-ADUser -SearchBase "DC=mydomain,DC=com" -Properties SAMAccountName, GivenName, Surname `
| Where-Object {
($_.GivenName -ne $null) -and
(($_.GivenName.Length -ne 0) -and ($_.SurName.Length -ne 0))
} `
| Select-Object $tableFormat | Export-Csv
$csvFileLocation -NoType
} else {
Add-Content ($csvFileLocation + ".txt") "The ActiveDirecotry Powershell Module does not
exist on this machine."
}
Ошибка я получаю ниже:
PS C:\Users\benc> C:\Users\benc\Desktop\ADImportTest.ps1
Get-ADUser : Cannot validate argument on parameter 'Filter'. The argument is null or empty.
Supply an argument that is not null or empty and then try the command again.
At C:\Users\benc\Desktop\ADImportTest.ps1:27 char:15
+ Get-ADUser <<<< -SearchBase "DC=mydomain,DC=com" `
+ CategoryInfo : InvalidData: (:) [Get-ADUser], ParameterBindingValidationException
+ FullyQualifiedErrorId :
ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADUser
Я не уверен, где я неправильно в скрипт, но любая помощь будет оценена.
Get-ADUser требует параметр фильтра, который вы не поставляете. Попробуйте добавить «-Filter *» к вашему вызову Get-ADUser и посмотреть, что вам нужно. Имейте в виду, что это не очень эффективно, поскольку вы получаете ВСЕ ОБЪЕКТЫ пользователя AD, а затем фильтруете их с помощью Where-Object. Прочтите подробную помощь по Get-ADUser для способов преобразования ваших фильтров Where-Object в формат, который нужен Get-ADUser; то вы будете фильтровать по мере запроса AD, что намного лучше. – jbsmith
Также сообщения об ошибках PowerShell, как правило, очень полезны при определении именно того, что является проблемой. В сообщении об ошибке ваша проблема была буквально правильной. 'Невозможно проверить аргумент в параметре 'Фильтр'. Аргумент пустой или пустой. Поставьте аргумент, который не является нулевым или пустым, а затем повторите попытку. ' – EdgeVB