mayho33
Goto Top

Powershell v5 und ConstrainedLanguage-Mode

Hi @ All

Vor kurzen ist mir aufgefallen, dass einfachste Dinge in Powershell v5 nicht mehr funktionieren, wenn PS nicht als Administrator ausgeführt wird.

Z.B.:
PS C:\> [System.Console]::WriteLine("Hello")  
Cannot invoke method. Method invocation is supported only on core types in this language mode.
At line:1 char:1
+ [System.Console]::WriteLine("Hello")  
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) , RuntimeException
    + FullyQualifiedErrorId : MethodInvocationNotSupportedInConstrainedLanguage

MS rechtfertigt das (verkürzt) so: Normale User sollen daran gehindert werden "alle" Powershell-Features ausführen zu können

W T F ???

Selbst das Erstellen von Objects oder das Abfragen des WindowsPrinzipals ist nicht mehr möglich ohne administrative Rechte

z.B.
function Show-ScriptRunAsAdmin() {
    $User = New-Object System.Security.Principal.WindowsPrincipal([System.Security.Principal.WindowsIdentity]::GetCurrent())
    $user.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
}

Nun meine Frage und die ist durchaus ernst gemeint:

Was geht ab mit Microsoft? Manche Unternehmen vergeben standardmäßig keine Adminrechte, der Aufgabenbereich erfordert es aber trotzdem mit Powershell zu arbeiten. Anscheined will MS, dass man das Net.Framework nicht mehr verwendet.

Beste Grüße!

Mayho

Content-Key: 395606

Url: https://administrator.de/contentid/395606

Ausgedruckt am: 28.03.2024 um 14:03 Uhr

Mitglied: NetzwerkDude
NetzwerkDude 13.12.2018 um 15:53:53 Uhr
Goto Top
Müsste laut dem Artikel nur so sein wenn du UMCI machst
https://blogs.msdn.microsoft.com/powershell/2017/11/02/powershell-constr ...

Ist das bei dir der Fall?
Mitglied: erikro
erikro 13.12.2018 um 16:42:57 Uhr
Goto Top
Moin,

also hier geht's als normaler User.

PS P:\ps1> [System.Console]::WriteLine("Hello")  
Hello
PS P:\ps1> $User = New-Object System.Security.Principal.WindowsPrincipal([System.Security.Principal.WindowsIdentity]::Ge
tCurrent())
PS P:\ps1> $user.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
False
PS P:\ps1> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.14409.1018
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.14409.1018
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Liebe Grüße

Erik
Mitglied: mayho33
mayho33 14.12.2018 um 10:19:19 Uhr
Goto Top
Hi erikro,

an meinem Home-PC W10 1803 x64 Ent. auch:
PS C:\Users\CMayrhofer> $ExecutionContext.SessionState.LanguageMode
FullLanguage

PS C:\Users\CMayrhofer> $PSVersionTable

Name                           Value                                                                                                                                     
----                           -----                                                                                                                                     
PSVersion                      5.1.17134.407                                                                                                                             
PSEdition                      Desktop                                                                                                                                   
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                                                                   
BuildVersion                   10.0.17134.407                                                                                                                            
CLRVersion                     4.0.30319.42000                                                                                                                           
WSManStackVersion              3.0                                                                                                                                       
PSRemotingProtocolVersion      2.3                                                                                                                                       
SerializationVersion           1.1.0.1

Firmen-PC W10 1809 x64 Ent. definitiv nicht mehr. Dieses Feature ist zwar schon sein 11.2017 im Umlauf, ich vermute aber, dass es nun "Scharf" ist.

Hier ist zu sehen was man noch als Standard-User zur Verfügung hat in PS:

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...

Das Definieren eines "dynamic param" gehört nicht mehr dazu. LOL
Mitglied: 137846
Lösung 137846 27.12.2018 aktualisiert um 18:12:17 Uhr
Goto Top
Zitat von @mayho33:
Firmen-PC W10 1809 x64 Ent. definitiv nicht mehr. Dieses Feature ist zwar schon sein 11.2017 im Umlauf
Im Umlauf ja aber nur auf Kisten bei denen Applocker oder Deviceguard oder ähnliche Produkte zum Einsatz kommen!
, ich vermute aber, dass es nun "Scharf" ist.
Nein, kann ich definitiv nicht bestätigen. Jungfräuliche VM mit W10 Enterprise x64 1809 auf aktuellstem Build, stink normaler User in seiner Powershell:

screenshot

An deinem Firmen PC wird sehr wahrscheinlich Applocker oder Device Guard zum Einsatz kommen, dann ist das ja auch korrektes Verhalten!

Gruß A.
Mitglied: mayho33
mayho33 14.01.2019 um 17:26:04 Uhr
Goto Top
Hi answer,

habe das überprüft und kann deine Aussage bestätigen :D . Nervt nur leider etwas hier eine Ausnahme zu bekommen.

Danke!
Mitglied: 137846
137846 14.01.2019 aktualisiert um 17:27:26 Uhr
Goto Top
Zitat von @mayho33:

Hi answer,

habe das überprüft und kann deine Aussage bestätigen :D . Nervt nur leider etwas hier eine Ausnahme zu bekommen.
Es ist keine Ausnahme. Es wurde eine frische VM ohne irgendwelche Änderungen genommen. An anderen Rechnern gleiches Verhalten. Muss also bei euch liegen.