Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Możesz użyć programu PowerShell Direct, aby uruchomić dowolny program PowerShell w systemie Windows 10 lub nowszym lub Windows Server 2016 lub nowszym maszyny wirtualnej z hosta Hyper-V. Użyj programu PowerShell Direct niezależnie od konfiguracji sieci lub ustawień zdalnego zarządzania.
Oto kilka sposobów uruchamiania programu PowerShell Direct:
- Jako sesja interaktywna przy użyciu polecenia cmdlet Enter-PSSession
- Jako pojedyncza sekcja do wykonania pojedynczego polecenia lub skryptu przy użyciu polecenia cmdlet Invoke-Command
- Jako sesja utrwalająca (kompilacja 14280 i nowsze) przy użyciu poleceń cmdlet New-PSSession, Copy-Item i Remove-PSSession
Requirements
Wymagania dotyczące systemu operacyjnego:
- Host: Windows 10, Windows Server 2016 lub nowszy z funkcją Hyper-V.
- Gość/maszyna wirtualna: Windows 10, Windows Server 2016 lub nowszy.
Jeśli zarządzasz starszymi maszynami wirtualnymi, użyj połączenia maszyny wirtualnej (VMConnect) lub połącz się za pośrednictwem połączenia sieciowego.
Wymagania dotyczące konfiguracji:
- Maszyna wirtualna musi działać lokalnie na hoście.
- Maszyna wirtualna musi być włączona i uruchomiona z co najmniej jednym skonfigurowanym profilem użytkownika.
- Musisz zalogować się do komputera hosta jako administrator Hyper-V.
- Musisz podać prawidłowe poświadczenia użytkownika dla maszyny wirtualnej.
Tworzenie i zamykanie interakcyjnej sesji programu PowerShell
Najprostszym sposobem uruchamiania poleceń programu PowerShell na maszynie wirtualnej jest uruchomienie sesji interaktywnej.
Po rozpoczęciu sesji polecenia uruchamiane na maszynie wirtualnej są uruchamiane tak samo, jak w przypadku wpisywania ich bezpośrednio w sesji programu PowerShell na samej maszynie wirtualnej.
Aby rozpocząć sesję interaktywną:
Na hoście Hyper-V otwórz program PowerShell jako administrator.
Uruchom jedno z następujących poleceń, aby utworzyć sesję interaktywną przy użyciu nazwy maszyny wirtualnej lub identyfikatora GUID:
Enter-PSSession -VMName <VMName> Enter-PSSession -VMId <VMId>Po wyświetleniu monitu wprowadź poświadczenia dla maszyny wirtualnej.
Uruchom polecenia na maszynie wirtualnej. Jako prefiks monitu programu PowerShell powinien zostać wyświetlony ciąg VMName w następujący sposób:
[VMName]: PS C:\>Każde uruchamiane polecenie jest wykonywane na maszynie wirtualnej. Aby przetestować, uruchom polecenie
ipconfiglubhostnameupewnij się, że te polecenia są uruchamiane na maszynie wirtualnej.Po zakończeniu uruchom następujące polecenie, aby zamknąć sesję:
Exit-PSSession
Uwaga / Notatka
Jeśli sesja nie zostanie nawiązana, zobacz rozwiązywanie problemów z potencjalnymi przyczynami.
Aby dowiedzieć się więcej na temat tych poleceń cmdlet, zobacz Enter-PSSession i Exit-PSSession.
Uruchamianie skryptu lub polecenia przy użyciu Invoke-Command
Program PowerShell Direct z Invoke-Command jest idealny w sytuacjach, w których musisz uruchomić jedno polecenie lub jeden skrypt na maszynie wirtualnej, ale nie trzeba kontynuować interakcji z maszyną wirtualną poza tym punktem.
Aby uruchomić jedno polecenie:
Na hoście Hyper-V otwórz program PowerShell jako administrator.
Uruchom jedno z następujących poleceń, aby utworzyć sesję przy użyciu nazwy maszyny wirtualnej lub identyfikatora GUID:
Invoke-Command -VMName <VMName> -ScriptBlock { command } Invoke-Command -VMId <VMId> -ScriptBlock { command }Po wyświetleniu monitu wprowadź poświadczenia dla maszyny wirtualnej.
Polecenie jest uruchamiane na maszynie wirtualnej. Jeśli polecenie generuje dane wyjściowe, zobaczysz je w konsoli. Połączenie zostanie zamknięte automatycznie po uruchomieniu polecenia.
Aby uruchomić skrypt:
Na hoście Hyper-V otwórz program PowerShell jako administrator.
Uruchom jedno z następujących poleceń, aby utworzyć sesję przy użyciu nazwy maszyny wirtualnej lub identyfikatora GUID:
Invoke-Command -VMName <VMName> -FilePath C:\host\script_path\script.ps1 Invoke-Command -VMId <VMId> -FilePath C:\host\script_path\script.ps1Po wyświetleniu monitu wprowadź poświadczenia dla maszyny wirtualnej.
Skrypt jest uruchamiany na maszynie wirtualnej. Połączenie zostanie zamknięte automatycznie po uruchomieniu polecenia.
Aby uzyskać więcej informacji na temat tego polecenia cmdlet, zobacz Invoke-Command.
Kopiowanie plików za pomocą New-PSSession i Copy-Item
Uwaga / Notatka
Program PowerShell Direct obsługuje tylko trwałe sesje w kompilacjach systemu Windows 14280 i nowszych
Trwałe sesje programu PowerShell są niezwykle przydatne podczas pisania skryptów, które koordynują akcje na co najmniej jednej maszynie zdalnej. Po utworzeniu trwałe sesje istnieją w tle do momentu podjęcia decyzji o ich usunięciu. Oznacza to, że możesz odwołać się do tej samej sesji ponownie z Invoke-Command przekazywaniem poświadczeń lub Enter-PSSession bez przekazywania poświadczeń.
Za pomocą tego samego tokenu sesje przechowują stan. Ponieważ sesje trwałe są utrwalane, wszystkie zmienne tworzone w sesji lub przekazywane do sesji są zachowywane w wielu wywołaniach. Do pracy z sesjami trwałymi można użyć wielu narzędzi. W tym przykładzie użyj polecenia New-PSSession i Copy-Item , aby przenieść dane z hosta na maszynę wirtualną i z maszyny wirtualnej do hosta.
Aby utworzyć sesję, skopiuj pliki:
Na hoście Hyper-V otwórz program PowerShell jako administrator.
Uruchom jedno z następujących poleceń, aby utworzyć trwałą sesję programu PowerShell na maszynie wirtualnej przy użyciu polecenia
New-PSSession.$s = New-PSSession -VMName <VMName> -Credential (Get-Credential) $s = New-PSSession -VMId <VMId> -Credential (Get-Credential)Po wyświetleniu monitu wprowadź poświadczenia dla maszyny wirtualnej.
Ostrzeżenie
W kompilacjach występuje usterka przed 14500. Jeśli nie określisz jawnie poświadczeń z flagą
-Credential, usługa w systemie gościa ulega awarii i musi zostać ponownie uruchomiona. Jeśli wystąpi ten problem, zobacz sekcję Błąd: sesja zdalna mogła zostać zakończona , aby uzyskać instrukcje obejścia.Skopiuj plik do maszyny wirtualnej.
Aby skopiować
C:\host_path\data.txtna maszynę wirtualną z maszyny hosta, uruchom polecenie:Copy-Item -ToSession $s -Path C:\host_path\data.txt -Destination C:\guest_path\Skopiuj plik z maszyny wirtualnej (na hoście).
Aby skopiować
C:\guest_path\data.txtdo hosta z maszyny wirtualnej, uruchom polecenie:Copy-Item -FromSession $s -Path C:\guest_path\data.txt -Destination C:\host_path\Zatrzymaj sesję trwałą przy użyciu polecenia
Remove-PSSession.Remove-PSSession $s
Rozwiązywanie problemów
Program PowerShell Direct przedstawia niewielki zestaw typowych komunikatów o błędach. W poniższych sekcjach opisano najbardziej typowe komunikaty o błędach, niektóre przyczyny i narzędzia do diagnozowania problemów.
-VMName lub parametry -VMID nie istnieją
Problem:
Enter-PSSession, lub Invoke-CommandNew-PSSession nie ma parametru -VMName lub -VMId .
Potencjalne przyczyny:
Najbardziej prawdopodobnym problemem jest to, że system operacyjny hosta nie obsługuje programu PowerShell Direct.
Kompilację systemu Windows można sprawdzić, uruchamiając następujące polecenie:
[System.Environment]::OSVersion.Version
Jeśli używasz obsługiwanej kompilacji, możliwe jest również, że wersja programu PowerShell nie obsługuje programu PowerShell Direct. W przypadku programu PowerShell Direct i JEA wersja główna musi mieć wartość 5 lub nowszą.
Możesz sprawdzić kompilację wersji programu PowerShell, uruchamiając następujące polecenie:
$PSVersionTable.PSVersion
Błąd: Sesja zdalna mogła zostać zakończona
Uwaga / Notatka
W przypadku Enter-PSSession między kompilacjami hosta 10240 i 12400 wszystkie błędy są raportowane jako "Sesja zdalna mogła zostać zakończona".
Komunikat o błędzie:
Enter-PSSession: Wystąpił błąd, którego program Windows PowerShell nie może obsłużyć. Sesja zdalna mogła zostać zakończona.
Potencjalne przyczyny:
- Maszyna wirtualna istnieje, ale nie jest uruchomiona.
- System operacyjny gościa nie obsługuje programu PowerShell Direct. Zobacz wymagania.
- Program PowerShell nie jest jeszcze dostępny w gościu
- System operacyjny nie zakończył rozruchu
- System operacyjny nie może poprawnie uruchomić
- Niektóre zdarzenie czasu rozruchu wymaga danych wejściowych użytkownika
Użyj polecenia cmdlet Get-VM , aby sprawdzić, które maszyny wirtualne są uruchomione na hoście.
Komunikat o błędzie:
New-PSSession: Wystąpił błąd, którego program Windows PowerShell nie może obsłużyć. Sesja zdalna mogła zostać zakończona.
Potencjalne przyczyny:
- Jedna z wymienionych wcześniej przyczyn — wszystkie mają zastosowanie do
New-PSSession - Usterka w bieżących kompilacjach, w której należy jawnie przekazać poświadczenia za pomocą polecenia
-Credential. W przypadku wystąpienia tej usterki cała usługa zawiesza się w systemie operacyjnym gościa i musi zostać ponownie uruchomiona. Możesz sprawdzić, czy sesja jest nadal dostępna za pomocą polecenia Enter-PSSession.
Aby obejść problem z poświadczeniami, zaloguj się do maszyny wirtualnej przy użyciu programu VMConnect, otwórz program PowerShell i uruchom ponownie usługę vmicvmsession przy użyciu następującego polecenia programu PowerShell:
Restart-Service -Name vmicvmsession
Błąd: nie można rozpoznać zestawu parametrów
Komunikat o błędzie:
Enter-PSSession: nie można rozpoznać zestawu parametrów przy użyciu określonych nazwanych parametrów.
Potencjalne przyczyny:
Nie można używać
-RunAsAdministratorpodczas nawiązywania połączenia z maszynami wirtualnymi.Podczas nawiązywania połączenia z kontenerem systemu Windows flaga
-RunAsAdministratorzezwala na połączenia administratora bez jawnych poświadczeń. Ponieważ maszyny wirtualne nie przyznają hostowi dorozumianego dostępu administratora, należy ręcznie wprowadzić poświadczenia.
Poświadczenia administratora można przekazać do maszyny wirtualnej za pomocą parametru -Credential lub wprowadzając je ręcznie po wyświetleniu monitu.
Błąd: poświadczenie jest nieprawidłowe
Komunikat o błędzie:
Enter-PSSession: poświadczenie jest nieprawidłowe.
Potencjalne przyczyny:
- Nie można zweryfikować poświadczeń gościa
- Podane poświadczenia były nieprawidłowe.
- Brak kont użytkowników w trybie gościa (system operacyjny nie został wcześniej uruchomiony)
- W przypadku nawiązywania połączenia jako administrator: administrator nie jest ustawiony jako aktywny użytkownik. Aby uzyskać więcej informacji, zobacz Włączanie i wyłączanie wbudowanego konta administratora.
Błąd: wejściowy parametr VMName nie jest rozpoznawany dla żadnej maszyny wirtualnej.
Komunikat o błędzie:
Enter-PSSession: wejściowy parametr VMName nie odnosi się do żadnej z maszyn wirtualnych.
Potencjalne przyczyny:
- Nie jesteś administratorem Hyper-V.
- Maszyna wirtualna nie istnieje.
Użyj polecenia cmdlet Get-VM , aby sprawdzić, czy używane poświadczenia mają rolę administratora Hyper-V i sprawdzić, które maszyny wirtualne są uruchomione lokalnie na hoście i uruchomione.
Przykłady i przewodniki użytkownika
Program PowerShell Direct obsługuje usługę Just Enough Administration (JEA).
Zapoznaj się z przykładami w witrynie GitHub.