Uruchom zdalną sesję PowerShell przy użyciu zapisanego pliku ps1

15

Usiłuję utworzyć kilka plików, które mogę zapisać na moim lokalnym pulpicie, aby uruchomić sesje PowerShell.

Zarówno Windows Server 2008, jak i Windows Server 2012 to instalacje Server Core.

Obecnie mogę otworzyć PowerShell i wpisać:

Enter-PSSession -computername Win2012SrvCore -credential administrator

Korzystając z tego, mogę łączyć się i uruchamiać polecenia i wszystko jest świetnie.

To, co próbowałem zrobić, to:

Utwórz plik Win2012SrvCore1.ps1o następującej nazwie :

$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

Utwórz plik Win2012SrvCore2.ps1o następującej nazwie :

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

Każdy ps1plik zostanie szybko uruchomiony i zamknięty z czerwonym tekstem, którego nie mogę odczytać.

Próbowałem dodać PAUSEdo każdego skryptu, ale wydaje się, że nie powstrzymuje to okna przed zamknięciem.

Chciałbym stworzyć skrypty, które mogę dwukrotnie kliknąć i otworzyć na monit PowerShell, podobny do zapisanej sesji RDP.

Skonfigurowałem pliki ps1 do wykonania:

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

Każda pomoc byłaby bardzo mile widziana.

Anthony Fornito
źródło
Co się stanie, jeśli wpiszesz to ręcznie w wierszu ISE wiersz po wierszu, polecenie po poleceniu? Czy nadal pojawia się błąd?
Colyn1337,
Otworzyłem Powershell ISE (Integrated Scripting Environemt) i uruchomiłem skrypt. Spowoduje to wyświetlenie danych wyjściowych i pozwoli kontynuować rozwiązywanie problemów.
BRNDR

Odpowiedzi:

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

Dodaj jeszcze jedną linię:

Import-PSSession $session

Następnie zapisz plik .PS1 i utwórz skrót do niego jako powershell.exe -noexit -File "C:\PS.ps1".

TheCleaner
źródło
12

dodaj `-noexit '

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

Craig
źródło
9

Spróbuj zapisać swoje polecenia jako plik skryptu, a następnie użyj skrótów w wierszu polecenia:

powershell.exe -noExit <filename.ps1>

Spowoduje to, że skróty uruchomią określony plik skryptu i nie zakończą programu PowerShell po zakończeniu wykonywania skryptów, dzięki czemu można kontynuować korzystanie z okna po ustanowieniu sesji.

Aby to zadziałało, musisz upewnić się, że zasady wykonywania programu PowerShell nie są ograniczone, w przeciwnym razie nie można wykonać plików skryptów

Aby sprawdzić bieżącą zasadę wykonywania, której możesz użyć Get-ExecutionPolicy, możesz użyć jej Set-ExecutionPolicydo trwałej zmiany zasad lub dodać -ExecutionPolcyparametr do wiersza polecenia programu PowerShell, aby zmienić go dla pojedynczej sesji.

Więcej informacji na temat zasad wykonywania i ich wpływu można znaleźć za pomocą help about_Execution_Policiespolecenia.

Crippledsmurf
źródło