1

Mein Szenario: Melden Sie sich über eine Remotedesktopverbindung beim Remotecomputer an, öffnen Sie die Eingabeaufforderung als "admin" und führen Sie einige Administratorbefehle in der Eingabeaufforderung aus.PowerShell: Wie Remote-Eingabeaufforderung Befehle als Admin von PowerShell ausführen?

Ich versuche das obige Szenario durch Powershell von meinem lokalen Rechner zu automatisieren.

Im Folgenden sind die Schritte, die ich getan habe:

  1. die Arbeits meines Powershell-Skript zu überprüfen, ich manuell in die Remote-Maschine (Admin Cred) angemeldet und ausgeführt, um diesen Befehl Start-Process cmd -ArgumentList '/c cmdcommand > output.txt -Verb runas. Dies funktioniert wie erwartet in der Remote-Maschine, wie ich die gewünschte Ausgabe bekomme.
  2. Jetzt habe ich versucht, diesen Befehl aus dem lokalen Powershell-Skript über Invoke-Command -ComputerName computername - ScriptBlock {Start-Process cmd -ArgumentList '/c cmdcommand > output.txt -Verb runas} -Credentials $cred auszuführen. Ich bekomme keine Ausgabe.
  3. Aber wenn ich versuche, den obigen Befehl ohne runas Parameter auszuführen, bekomme ich die Ausgabe, die besagt, dass dieser bestimmte Befehl Admin-Anmeldeinformationen benötigt, die erwartet wird. Invoke-Command -ComputerName computername - ScriptBlock {Start-Process cmd -ArgumentList '/c cmdcommand > output.txt} -Credentials $cred.

Fehle ich hier etwas?

Antwort

0

Execute:

Enable-PSRemoting -Force 

In einer erhöhten Eingabeaufforderung auf dem Ziel-PC. Dann Restart-Service WinRM

Enter-PSSession -ComputerName $rpc -Credential (Get-Credential) 
+0

Danke für den Kommentar. Ich habe zuerst die windows.powershell-Sitzung für die Remote-Kommunikation aufgerufen und mit dieser Sitzung konnte ich die Remote-Befehle als Admin von meinem Client-Rechner ausführen. –

0

Wenn Sie entfernte Lage sind, Endpunkt Microsoft.PoweShell auf Standard, der bedeutet, dass der ausführende Benutzer ist ein Administrator in der Zielmaschine.

Aber hier vermute ich, dass die cmdcommand, die Sie angegeben haben, tatsächlich eine Ausführung ausführt, die auf eine Remote-Ressource abzielt, daher wird es zu einem doppelten Hoffnungsproblem.

Wenn dies der Fall ist, wird der folgende Artikel eine Lösung für Sie sein.

Its all about Credential Delegation

+0

Vielen Dank @ Prasoon für den Kommentar. Ich habe mein Skript ein wenig modifiziert '$ session = New-PSSession-Computername $ remoteComputer-Konfigurationsname Windows.PowerShell' und die Verwendung dieser Sitzung im Aufruf-Befehl löste mein Problem. Mein Verständnis war, dass, wenn wir nicht explizit Sitzung verwenden, die Standardsitzung windows.powershell wäre. Ich habe keine Ahnung, wie das funktioniert hat. Irgendeine Erklärung dafür? –

+0

Der Standardendpunkt ist 'Microsoft.PowerShell'. Wahrscheinlich haben Sie in Ihrer Umgebung einen Endpunkt mit dem Namen' Windows.PowerShell'. Um die verfügbaren Endpunkte anzuzeigen, melden Sie sich am Zielcomputer an und sehen Sie sich das Ergebnis des Cmdlets Get-PSSessionConfiguration an. –

Verwandte Themen