2017-12-30 25 views
-1

Ich versuche eine PowerShell-Endpunktbeschränkung zu erstellen, die einen Benutzer daran hindert, nur die Funktionen in einem benutzerdefinierten Modul auszuführen, das ich erstellt habe.Eingeschränkter Endpunkt für einen bestimmten Benutzer

Die erste Sache, die ich tat, ist import-module mymodule.psm1, die mir erlaubt, meine Module in Ordnung mit meinem Host-System zu laufen.

Dann erstellt der folgende PS-Befehl die Konfigurationsdatei für den Endpunkt, die es den Funktionen innerhalb der Klammern erlaubt, die einzigen Funktionen zu sein, die der Benutzer ausführen kann.

New-PSSessionConfigurationFile -VisibleFunctions('Get-Command','Get-Info', 'CreateAD-User','Generate-Html','Change-Logon') -LanguageMode ‘ConstrainedLanguage’ –SessionType ‘RestrictedRemoteServer’ –Path ‘c:\test\helpdesk.pssc’ 

Dann melde ich mich an den Endpunkt mit

Register-PSSessionConfiguration –Name ‘HelpDesk’ -ShowSecurityDescriptorUI –Path ‘c:\test\helpdesk.pssc’ 

und ausgewählt, welcher Benutzer erlaube ich möchte diese Constraints zu haben, sobald die SecurityDescriptorUI sich öffnet. Nachdem ich in den Benutzer anmelden, setze ich für die Constraints up mit

Enter-PSSession -computername SRV1-AD -Credential $credential -ConfigurationName HelpDesk 

Dies sind die erlaubten Cmdlets/Funktionen, die der Benutzer ausführen darf. Dies sind die standardmäßig erforderlichen Cmdlets, um Remoteverbindungen zu einem System zu ermöglichen.

Image

Wie kann ich meine benutzerdefinierten Modul können Benutzer der Endpunkt ermöglicht die einzigen Funktionen sein auszuführen? oder Wie kann ich mein Modul in die Konfigurationsdatei importieren, damit es jedes Mal ausgeführt wird, wenn die HelpDesk-Endpunktkonfiguration verwendet wird. Ich weiß, dass es in der Konfigurationsdatei eine Zeile zum Importieren von Modulen gibt, aber Import-Module ist eigentlich kein Modul. Ein Beispiel für ein Modul wäre ActiveDirectory, wenn ich herausfinden könnte, welches Modul import-modul ist sollte dafür schnell und dreckig arbeiten können.

UPDATE

Eine schmutzige Lösung, die ich für diese gefunden wurde in der Sitzung des Benutzers eingeben und deaktivieren Sie alle Cmdlets/Funktionen außer denen, die ich zum Beispiel import-module & Get-Command mit Import-Modul erlaubt möchte ich kann manuell Importieren Sie mein benutzerdefiniertes Modul und meine Funktionen sind die einzigen, die für den Benutzer sichtbar sind. Aber das ist keine perfekte Lösung, denn das bedeutet, dass ich mein Modul in jedes System herunterladen muss, damit es funktioniert und es keine Lösung mehr ist. Die ideale Lösung ist, dass mein Modul lokal gespeichert wird, eine Sitzung mit dem registrierten Endpunkt beginnt und mein Modul bereits in das Benutzerkonto importiert wird.

Enter-PSSession -computername SRV1-AD -Credential $credential -ConfigurationName HelpDesk 

weiteres Update

Benutzer @ Prasoon-karunan-v schlug ich -ScriptsToProcess & FunctionDefinitions verwendet, um das Modul zu importieren, so dass ich den folgenden Befehl verwendet

New-PSSessionConfigurationFile -VisibleFunctions('Get-Command','Get-Info', 'CreateAD-User','Generate-Html','Change-Logon') -LanguageMode ‘ConstrainedLanguage’ –SessionType ‘RestrictedRemoteServer’ –Path ‘.\EndPoint.pssc’ -ScriptsToProcess C:\Users\Administrator\Desktop\Modules\ImportM.psm1 

In der Konfigurationsdatei I Stellen Sie auch die Funktionen, die ich verwenden möchte, so ein

# Functions defined in this session configuration 
FunctionDefinitions = 'Get-Command','Get-Info', 'CreateAD-User','Generate-Html','Change-Logon' 

Als ich versuchte, eine Sitzung aufzubauen es den folgenden Fehler

Error1

Dann vielleicht dachte ich werfen würde es nicht funktioniert, weil wurden den Befehl nicht zu sagen, etwas zu importieren deutet nur auf die Moduldatei, Vielleicht muss ich ein kleines Skript erstellen, das das Modul importiert und dann die Konfigurationsdatei hinzufügt. Also genau das, was ich getan habe, habe ich ein kleines Skript mit nur Import-Modul C: \ Module \ ImportM.psm1 erstellt und dann ging ich zu der .pssc Datei und fügte dieses Skript der ScriptsToProcess hinzu, aber ich bekomme den folgenden Fehler nachdem ich versucht habe, eine Sitzung mit dem eingeschränkten Endpunkt zu beginnen.

Error

Sprachmodus wird auf

LanguageMode = 'RestrictedLanguage' 
+0

So durch diese: ‚Die ideale Lösung ist mein Modul lokal gespeichert haben ... ", Sie wollen dieses Modul auf eine Dateifreigabe stellen und jeder Host in Ihrem Unternehmen kann darauf verweisen? Das bedeutet, dass Sie das $ -Profil jedes Benutzers in Punktquelle für diese Freigabe ändern müssen und sich mit Szenarien befassen müssen, wenn diese Freigabe offline/nicht verfügbar ist, wenn ein Benutzer seinen Host startet und versucht, Ihr Modul zu verwenden. – postanote

+0

Ich weiß nicht, ob ich das richtig phased, ich möchte keine Freigabe verwenden oder für die Konfiguration dauerhaft sein, wenn Sie "Konfigurationsname HelpDesk" beim Anmelden in einer Sitzung die Einschränkung oder Einschränkungen ausführen, wenn Sie nicht ''KonfigurationsName HelpDesk' nicht verwenden, wird das Benutzerprofil ein reguläres Profil sein. @postanote – Katz

+1

Ich würde vorschlagen [Lesen Sie diesen Artikel] (https://docs.microsoft.com/en-us/powershell/jea/role-capabilities). Warum benutzt du 'JEA' nicht? – TheIncorrigible1

Antwort

0

Verwendung -ScriptsToProcess Parameter, die verwendet werden können Ihre benutzerdefinierten Modul zu importieren.

Siehe auch unten.

Get-Help New-PSSessionConfigurationFile -Parameter ScriptsToProcess

Get-Help New-PSSessionConfigurationFile -Parameter FunctionDefinitions

Update:

über den Sprachmodus Achten Sie darauf, zu verwenden, sehen here

+0

Also habe ich mein eigenes Modul zu 'ScriptsToProcess' hinzugefügt. Ich habe es mit dem absoluten Pfad zum Modul für ex' C: \ Modules \ module1 hinzugefügt.psm1', aber ich kann die Sitzung mit Enter-PSSession nicht aufbauen, wenn ich versuche, mich mit 'Konfigurationsname HelpDesk' anzumelden, aber ohne sie funktioniert es gut. Ich werde meine Frage aktualisieren und ich werde ein Bild des Fehlers hinzufügen. – Katz

+0

Ich habe die Frage aktualisiert. Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen. Vielen Dank! – Katz

+0

@Katz - Meine Antwort aktualisiert –

Verwandte Themen