Я хотел бы иметь сценарий, который принимает txt-файл идентификаторов пользователей AD, указывает, какие «не найдены», предоставляет свойство DisplayName
для найденных и экспортирует результаты в файл. Это возможно?Пользователи PowerShell AD
Я пробовал это, но он не возвращал известных действительных идентификаторов пользователей.
$ user = Get-Content "c: \ users \ oh75256 \ desktop \ powershell learning \ userids.txt" $ user | Еогеасп { $ Name = "$ _" $ Searcher = [ADSISearcher] "(DisplayName = $ Name)" $ Результаты = $ Searcher.FindOne() если ($ Результаты -eq $ NULL) { «$ Имя не в AD ">> C: \ users \ oh75256 \ userstatus.csv } else { $ status = (Get-ADUser $ Name) .Enabled if ($ status -eq" True ") { " $ Name is действительный»>> C: \ пользователи \ oh75256 \ userstatus.csv } еще { "$ Name не является действительным" >> C: \ пользователи \ oh75256 \ userstatus.csv }} }
это работает ! Теперь, когда у меня есть 2 рабочих сценария powershell, я хотел бы объединить их в один. У меня есть один txt-файл с 4 столбцами: hostname, lastuser, status, AD. Я хотел бы начать с моего скрипта ping, который пингует имя хоста, и если он пингует, он возвращает имя пользователя loggedon. если он не выполняет ping, он возвращает «offline». Затем я хотел бы взять столбец lastuser для автономного имени хоста и проверить его против AD, чтобы вернуть имя пользователя или «не найденное в AD». Вот пример текстового файла: pingnames.txt
HostName LastUser Статус (в автономном режиме или SamAccountName) AD (Имя или не найден)
NAHNT-1234567 bruteaa
NAHNT-2345678 OH75256
NAHNT-3456789 YD13099
NAHNT-4567891 rh16633
NAHNT-5678912 Администратор
NAHNT-6789123 xt07718
NAHNT-8912345 AA00718
NAHNT-9123456 LR17114
Это мой сценарий для ping и получения текущего входа в систему.
function get-avail {
param ($computername)
$availCheck = New-Object psobject -property @{
ComputerName = $computername
Status = 'Offline'
LogonUser = 'None'
}
$test = Test-Connection -ComputerName $computername -Count 1
-errorAction:SilentlyContinue
if ($test) {
$availCheck.Status = 'Online'
$wmics = Get-WmiObject Win32_ComputerSystem -ComputerName $computername
}
if ($wmics.UserName) {
$availCheck.LogonUser = $wmics.UserName
}
$availCheck | select ComputerName,Status,LogonUser
}
cat "c:\myfiles\pingnames.txt" | %{ get-avail $_ } | export-csv c:\myfiles\results.csv
Это мой скрипт для проверки идентификатор_пользователя в AD
$userProfile = Get-Content "c:\myfiles\userids.txt" |
Select @{Expression={$_};Label="SamAccountName"},
@{Expression={" "};Label="First Name"},
@{Expression={" "};Label="Last Name"},
@{Expression={$False};Label="ExistInAD"}
foreach($user in $userProfile)
{
$Account = Get-ADUser $user.SamAccountName
-erroraction silentlycontinue
If($?)
{
$user.SamAccountName
$user.ExistInAD = $True
$user.'First Name' = $Account.GivenName
$user.'Last Name' = $Account.Surname
}
Else
{
"------------------------ $($user.SamAccountName)"
}
}
$userProfile | export-csv "c:\myfiles\mycsv.csv" -NoTypeInformation
Можно ли объединить их? -Thanks, Karen
«, но он не вернулся известный действительный пользователь ID "- то, что * он сделал? –