2017-06-21 1 views
1

gefunden wird. Dies ist für diese Dokumentenverwaltungssystemanwendung (DMS), die wir verwenden, Worksite/Filesite. Grundsätzlich haben wir 3 Büros und 3 Server. Wenn sich Personen von der Organisationseinheit eines bestimmten Standorts anmelden, sollten sie nach dem Ausführen des folgenden Befehls die Verbindung zu dieser Site erhalten. Ich bin nah dran, das Ergebnis zu erreichen, aber es funktioniert nicht aus mehreren Gründen und in verschiedenen Situationen.Führen Sie den Befehl aus, wenn der Benutzer in der Organisationseinheit mithilfe von -Searchbase

Dieser Code läuft auf einem Windows-Rechner 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 } 

Was passiert ist, wird das Add-In für alle drei Standorte sind für Outlook hinzugefügt, was ich nicht will. Wenn ich den gleichen Code auf dem Remote-Terminal-Services-Maschine verwenden, führt er nur für $Office1 und stoppt auch wenn der Benutzer entweder von $Office2 oder $Office3

Meine Fragen sind:

  1. Wie kann ich -Searchbase verwenden, um den richtigen Befehl für das richtige Büro ausführen? Msgstr "Wenn der angemeldete Benutzer $ env: username ist, searchbase in OU und dann $ thisexe ausführen"
  2. Meine if - Anweisungen sind falsch, aber ich bekomme keine effektive Methode zur Verwendung der Switch - Funktion EDIT: Nur um zu sehen wie das funktioniert, ich habe das Skript ohne irgendwelche Bedingungen ausgeführt und es führt einfach jede Zeile nacheinander aus und jetzt bin ich noch verwirrter.

Antwort

1

Vielleicht können Sie DistinguishedName verwenden:

$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 
+0

ich versucht hatte bereits den DistinguishedName Ansatz und es ist immer noch das gleiche Problem. – SunnyWorld

+0

Ok ... das hast du geschrieben: Wenn ich den gleichen Code auf der Remote Terminal Services Maschine verwende ... benutzt du Invoke-Methode? Haben Sie das Modul Active-Directory importiert? Etwas wie: Invoke-Command-Computername $ Host {Install-Windowsfeature-Name RSAT-Module Management Tools}, und auf dem Remote-PCs - Winrm qc? =) – Vitaly

+0

Danke für den Zeiger, Vitaly! :) Unabhängig von RSAT sollte dies jedoch auch lokal ausgeführt werden. Was passiert, ist, dass es jede Zeile der ausführbaren Datei ausführt und dem Benutzer alle 3 Server hinzufügt. – SunnyWorld

Verwandte Themen