Starten Sie die Remote-PowerShell-Sitzung mit der gespeicherten ps1-Datei

15

Ich versuche, einige Dateien zu erstellen, die ich auf meinem lokalen Desktop speichern kann, um PowerShell-Sitzungen zu starten.

Windows Server 2008 und Windows Server 2012 sind beide Server Core-Installationen.

Derzeit kann ich Powershell öffnen und Folgendes eingeben:

Enter-PSSession -computername Win2012SrvCore -credential administrator

Auf diese Weise kann ich Befehle verbinden und ausführen, und alles ist großartig.

Was ich versucht habe, ist:

Erstellen Sie eine Datei Win2012SrvCore1.ps1mit folgendem Aufruf :

$passwd = convertto-securestring -AsPlainText -Force -String MYPASSWORD

$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist "administrator",$passwd

$session = new-pssession -computername Win2012SrvCore -credential $cred

Erstellen Sie eine Datei Win2012SrvCore2.ps1mit folgendem Aufruf :

PowerShell.exe -Command Enter-PSSession -computername Win2012SrvCore -credential administrator

Jede ps1Datei wird gestartet und schnell mit rotem Text geschlossen, den ich nicht lesen kann.

Ich habe versucht, PAUSEjedes Skript zu ergänzen , aber das scheint das Schließen des Fensters nicht zu verhindern.

Was ich tun möchte, ist, Skripte zu erstellen, auf die ich doppelklicken und die Powershell-Eingabeaufforderung öffnen kann, ähnlich wie bei einer gespeicherten RDP-Sitzung.

Ich habe ps1-Dateien für die Ausführung konfiguriert:

C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe

Jede Hilfe wäre sehr dankbar.

Anthony Fornito
quelle
Was passiert, wenn Sie dies Zeile für Zeile und Befehl für Befehl manuell in die ISE eingeben? Erhalten Sie immer noch eine Fehlermeldung?
Colyn1337
Ich würde Powershell ISE (Integrated Scripting Environment) öffnen und das Skript ausführen. Dadurch wird die Ausgabe angezeigt und Sie können mit der Fehlerbehebung fortfahren.
BRNDR

Antworten:

10
$passwd = convertto-securestring -AsPlainText -Force -String MYPASSWORD

$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist "administrator",$passwd

$session = new-pssession -computername Win2012SrvCore -credential $cred

Fügen Sie eine weitere Zeile hinzu:

Import-PSSession $session

Speichern Sie dann die .PS1-Datei und erstellen Sie eine Verknüpfung zu ihr als powershell.exe -noexit -File "C:\PS.ps1".

Der Reiniger
quelle
12

add `-noexit '

PowerShell.exe -noexit -Command Enter-PSSession -computername Win2012SrvCore -credential administrator

Craig
quelle
9

Versuchen Sie, Ihre Befehle als Skriptdatei zu speichern, und lassen Sie dann Ihre Verknüpfungen die Befehlszeile verwenden:

powershell.exe -noExit <filename.ps1>

Auf diese Weise führen Ihre Verknüpfungen die angegebene Skriptdatei aus und beenden Powershell nicht am Ende der Skriptausführung. Sie können das Fenster also weiterhin verwenden, nachdem die Sitzung eingerichtet wurde.

Damit dies funktioniert, müssen Sie sicherstellen, dass die PowerShell-Ausführungsrichtlinie nicht eingeschränkt ist. Andernfalls können keine Skriptdateien ausgeführt werden

Um die aktuelle Ausführungsrichtlinie zu überprüfen, die Sie verwenden können, können Get-ExecutionPolicySie entweder Set-ExecutionPolicydie Richtlinie dauerhaft ändern oder den -ExecutionPolcyParameter zur Powershell-Befehlszeile hinzufügen , um ihn für eine einzelne Sitzung zu ändern.

Weitere Informationen zu Ausführungsrichtlinien und deren Auswirkungen finden Sie mit dem help about_Execution_PoliciesBefehl.

Crippledsmurf
quelle