Das ist etwas unglaublich Einfaches, aber ich kann einfach nichts zur Arbeit bringen. Ich möchte einen Blockcode in einem Powershell-Skript unter einem bestimmten Benutzer ausführen. Das Schlüsselwort ist lokal und ich verwende Powershell 2.0.
Invoke-Command scheint einen Remote-Host zu benötigen? Ich führe das folgende aus und die Fehlermeldung, die ich sehe, scheint so viel zu empfehlen:
%Vor%Start-Job mit -ScriptBlock wird nicht mit Powershell 2.0 unterstützt? Ich führe das folgende aus und die Fehlermeldung, die ich sehe, scheint so viel zu empfehlen:
%Vor%Tue ich etwas falsch oder gibt es einen alternativen Weg?
Hinzugefügt: Hier ist, was ich versuche, an erster Stelle zu tun. Ich mache eine geplante Aufgabe, die ausgeführt wird, wenn sich ein Benutzer bei einem Terminal anmeldet / entsperrt, das Anmeldeinformationen in eine Datei schreibt. Der geplante Task wird als lokaler Benutzer ausgeführt, um die Informationen zum Benutzernamen, Profil usw. zu erhalten. Die Anmeldeinformationen werden dann unter Verwendung eines anderen Benutzerkontos in eine Protokolldatei geschrieben. Dies ist das einzige Konto, das die Datei ändern kann. Um den Zugriff auf die Anmeldeinformationen im Skript zu verhindern, konvertiere ich das Skript mit PS2EXE in eine EXE.
Ein anderer Ansatz ist die Impresonation, es ist eine gute Option, wenn Sie Remoting nicht aktivieren wollen.
Sieh dir das an - Ссылка
Sie sollten dieses Modul einfach importieren und Ihren Code zwischen
setzenPush-ImpersonationContext $ credential
und
Pop-ImpersonationContext
Es würde Ihnen helfen, die Fehlermeldungen zu sehen, die Sie uns nicht zeigen, aber ich denke, die Antwort auf Ihre Frage ist die Verwendung von PowerShell Remoting, wie Sie es mit Invoke-Command
versucht haben. Der Computername .
ist in Ordnung, wie auch localhost
, aber Sie müssen Remoting auf Ihrem Computer aktiviert haben, um dies zu tun.
Um Remoting zu aktivieren, führen Sie Enable-PSRemoting
in der Powershell aus, oder führen Sie winrm quickconfig
in einer normalen Eingabeaufforderung aus.
Wenn Remoting bereits aktiviert ist, versuchen Sie möglicherweise, das Remoting mit einem nicht administrativen Benutzer durchzuführen. Wenn das der Fall ist, sehen Sie sich die Ausgabe von Get-PSSessionConfiguration
an. Sie erhalten eine Liste der Endpunkte und der angewendeten Berechtigungen.
Der Endpunkt, mit dem Sie sich standardmäßig verbinden, heißt Microsoft.Powershell
und Sie können die Berechtigungen mit Set-PSSessionConfiguration
ändern (achten Sie darauf, den Parameter -ShowSecurityDescriptorUI
zu verwenden, es sei denn, Sie wollen mit SDDL umgehen).
Aber anstatt das zu tun, sollte es bereits eine Gruppe namens " BUILTIN\Remote Management Users
" geben, der Sie Ihren eingeschränkten Benutzer hinzufügen können.
Wenn nichts davon hilft, geben Sie weitere Details und Fehlermeldungen an.
Nachdem ich die Erklärung dessen gesehen habe, was Sie letztendlich erreichen wollen, habe ich einen anderen Vorschlag für Sie.
Dies könnte ein schneller Kompromiss sein, um das zu tun, was Sie wollen, ohne Remoting und ohne die Anmeldeinformationen des privilegierten Benutzers offenzulegen.
Das Hauptproblem meiner ursprünglichen Idee besteht darin, dass Sie die Anmeldeinformationen in das Skript einbetten müssen, damit der eingeschränkte Benutzer Zugriff auf die Anmeldeinformationen des Kontos erhält, das die Datei sowieso ändern kann.
Sie hätten einen Web-Service, den Sie mit Ihrem Powershell-Skript für begrenzte Benutzer aufrufen können, in dem Sie ihm nur die Anmeldeinformationen geben und nichts zurückbekommen. Sie würden also eine URL eingeben und ein POST
oder was auch immer mit den Daten machen, die Sie protokollieren möchten, aber dieser Benutzer kann niemals irgendwelche Informationen abrufen. Es könnte etwas mehr als das sein, was Sie dafür tun wollen.
Hier ist ein anderer Weg.
%Vor%Mit der Option -LoadUserProfile hat dies den zusätzlichen Vorteil, dass das Benutzerprofil erstellt wird, falls es nicht bereits existiert.
Tags und Links windows powershell