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.
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
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.
Sprachmodus wird auf
LanguageMode = 'RestrictedLanguage'
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
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
Ich würde vorschlagen [Lesen Sie diesen Artikel] (https://docs.microsoft.com/en-us/powershell/jea/role-capabilities). Warum benutzt du 'JEA' nicht? – TheIncorrigible1