Выполните команду, если пользователь найден в OU, с помощью -Searchbase
Это специфично для данного приложения системы управления документами (DMS), которое мы используем под названием Worksite / Filesite
, По сути, у нас есть 3 офиса и 3 сервера, и если люди входят в систему с OU определенного сайта, независимо от физического присутствия, они должны быть представлены с подключением к этому сайту после выполнения следующей команды. Я близок к достижению результата, но он не работает по нескольким причинам и в разных ситуациях.
Этот код работает на компьютере с Windows 10
Start-Process 'C:\Program Files (x86)\Microsoft Office\Office16\OUTLOOK.EXE'
Start-Process 'C:\Program Files (x86)\Internet Explorer\iexplore.exe'
$Office1 = & 'C:\Program Files (x86)\Interwoven\WorkSite\addiman.exe OFFICE1-SRV'
$Office2 = & 'C:\Program Files (x86)\Interwoven\WorkSite\addiman.exe OFFICE2-SRV'
$Office3 = & 'C:\Program Files (x86)\Interwoven\WorkSite\addiman.exe OFFICE3-SRV'
$loggedinuser = Get-ADUser -Identity $env:UserName
if (Select-String -Pattern "Office1-User" -InputObject $loggedinuser) { $Office1 }
if (Select-String -Pattern "Office2-User" -InputObject $loggedinuser) { $Office2 }
if (Select-String -Pattern "Office3-User" -InputObject $loggedinuser) { $Office3 }
Что происходит, надстройка для всех 3 сайтов добавлены для Outlook, что я не хочу. Если я использую тот же код на машине служб удаленного терминала, он выполняется только для $Office1
и останавливается, даже если пользователь $Office2
или же $Office3
Мои вопросы:
- Как я могу использовать -Searchbase для выполнения правильной команды для нужного офиса? "Если вошедшим в систему пользователем является $env:username, ищите в OU и затем выполняйте $thisexe"
- Мои операторы if неверны, но я не получаю эффективный метод использования функции Switch. РЕДАКТИРОВАТЬ: просто чтобы посмотреть, как это работает, я запустил скрипт без каких-либо условий, и он просто выполняет каждую строку последовательно, а теперь я я еще больше запутался.
1 ответ
Может быть, вы можете использовать DistinguishedName:
$loggedinuser = get-aduser -Identity $env:UserName -Properties DistinguishedName
if ($loggedinuser.DistinguishedName -like "*Office1-User*") {
$Office1 = & 'C:\Program Files (x86)\Interwoven\WorkSite\addiman.exe OFFICE1-SRV'
}
etc