1

这是我们使用的文档管理系统 (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 }

发生的情况是,为 Outlook 添加了所有 3 个站点的加载项,这是我不想要的。如果我在远程终端服务机器上使用相同的代码,$Office1即使用户来自任一$Office2$Office3

我的问题是:

  1. 如何使用 -Searchbase 为正确的办公室执行正确的命令?"如果登录用户是$env:username,在OU中搜索数据库然后执行$thisexe"
  2. 我的 if 语句是错误的,但我没有找到使用 Switch 函数的有效方法我更糊涂了。
4

1 回答 1

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
于 2017-06-21T10:50:51.673 回答