Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
PowerShell Direct'i kullanarak windows 10 veya üzeri veya Windows Server 2016 ya da daha yeni bir sanal makinede Hyper-V konağınızdan rastgele PowerShell çalıştırabilirsiniz. Ağ yapılandırmasından veya uzaktan yönetim ayarlarından bağımsız olarak PowerShell Direct'i kullanın.
PowerShell Direct'i çalıştırmanın bazı yolları şunlardır:
- Enter-PSSession cmdlet'ini kullanarak etkileşimli oturum olarak
- Invoke-Command cmdlet'ini kullanarak tek bir komut veya betik yürütmek için tek kullanımlık bir bölüm olarak
- New-PSSession, Copy-Item ve Remove-PSSession cmdlet'lerini kullanarak kalıcı oturum (derleme 14280 ve üzeri)
Gereksinimler
İşletim sistemi gereksinimleri:
- Konak: Hyper-V çalıştıran Windows 10, Windows Server 2016 veya üzeri.
- Konuk/Sanal Makine: Windows 10, Windows Server 2016 veya üzeri.
Eski sanal makineleri yönetiyorsanız Sanal Makine Bağlantısı (VMConnect) kullanın veya sanal makine için bir sanal ağ yapılandırın.
Yapılandırma gereksinimleri:
- Sanal makinenin ev sahibi üzerinde yerel olarak çalışıyor olması gerekir.
- Sanal makinenin en az bir yapılandırılmış kullanıcı profiliyle açık ve çalışır durumda olması gerekir.
- Ana bilgisayarda Hyper-V yöneticisi olarak oturum açmış olmanız gerekir.
- Sanal makine için geçerli kullanıcı kimlik bilgileri sağlamanız gerekir.
Etkileşimli bir PowerShell oturumu oluşturma ve oturumdan çıkma
PowerShell komutlarını sanal makinede çalıştırmanın en kolay yolu etkileşimli bir oturum başlatmaktır.
Oturum başladığında, yazdığınız komutlar sanal makinede, sanal makinenin kendisinde bir PowerShell oturumuna doğrudan yazdığınız gibi çalışır.
Etkileşimli oturum başlatmak için:
Hyper-V ana bilgisayarında PowerShell'i Yönetici olarak açın.
Sanal makine adını veya GUID'yi kullanarak etkileşimli bir oturum oluşturmak için aşağıdaki komutlardan birini çalıştırın:
Enter-PSSession -VMName <VMName> Enter-PSSession -VMId <VMId>
İstendiğinde sanal makine için kimlik bilgilerini sağlayın.
Sanal makinenizde komutları çalıştırın. PowerShell isteminizin ön eki olarak VMName değerini aşağıdaki gibi görmeniz gerekir:
[VMName]: PS C:\>
Çalıştırılan herhangi bir komut sanal makinenizde çalıştırılacaktır. Test etmek için, bu komutların sanal makinede çalıştığından emin olmak amacıyla
ipconfig
veyahostname
komutunu çalıştırabilirsiniz.İşiniz bittiğinde, oturumu kapatmak için aşağıdaki komutu çalıştırın:
Exit-PSSession
Uyarı
Oturumunuz bağlanamıyorsa olası nedenler için sorun giderme bölümüne bakın.
Bu cmdlet'ler hakkında daha fazla bilgi edinmek için bkz. Enter-PSSession ve Exit-PSSession.
Invoke-Command ile betik veya komut çalıştırın
Invoke-Command ile PowerShell Direct, bir sanal makinede bir komut veya betik çalıştırmanız gereken ancak bu noktadan sonra sanal makineyle etkileşime devam etmeniz gerekmediği durumlar için mükemmeldir.
Tek bir komut çalıştırmak için:
Hyper-V ana bilgisayarında PowerShell'i Yönetici olarak açın.
Sanal makine adını veya GUID'yi kullanarak oturum oluşturmak için aşağıdaki komutlardan birini çalıştırın:
Invoke-Command -VMName <VMName> -ScriptBlock { command } Invoke-Command -VMId <VMId> -ScriptBlock { command }
İstendiğinde sanal makine için kimlik bilgilerini sağlayın.
Komut sanal makinede yürütülecek, eğer konsol çıktısı varsa, konsolunuza yazdırılacaktır. Komut çalıştırılır çalıştırılmaz bağlantı otomatik olarak kapatılır.
Betiği çalıştırmak için:
Hyper-V ana bilgisayarında PowerShell'i Yönetici olarak açın.
Sanal makine adını veya GUID'yi kullanarak oturum oluşturmak için aşağıdaki komutlardan birini çalıştırın:
Invoke-Command -VMName <VMName> -FilePath C:\host\script_path\script.ps1 Invoke-Command -VMId <VMId> -FilePath C:\host\script_path\script.ps1
İstendiğinde sanal makine için kimlik bilgilerini sağlayın.
Betik sanal makinede yürütülecek. Komut çalıştırılır çalıştırılmaz bağlantı otomatik olarak kapatılır.
Bu cmdlet hakkında daha fazla bilgi edinmek için bkz. Invoke-Command.
dosyaları New-PSSession ve Copy-Item ile kopyalama
Uyarı
PowerShell Direct yalnızca Windows 14280 ve sonraki derlemelerde kalıcı oturumları destekler
Kalıcı PowerShell oturumları, bir veya daha fazla uzak makinede eylemleri koordine eden betikler yazarken son derece kullanışlıdır. Oluşturulduktan sonra, siz silmeye karar verinceye kadar arka planda kalıcı oturumlar bulunur. Bu, kimlik bilgilerini geçirmeden Invoke-Command
veya Enter-PSSession
ile aynı oturuma tekrar tekrar başvurabileceğiniz anlamına gelir.
Benzer şekilde, oturumlar durumu tutar. Kalıcı oturumlar devam ettiğinden, oturumda oluşturulan veya oturuma geçirilen tüm değişkenler birden çok çağrıda korunur. Kalıcı oturumlarla çalışmak için kullanabileceğiniz çeşitli araçlar vardır. Bu örnekte New-PSSession ve Copy-Item kullanarak verileri konaktan sanal makineye ve bir sanal makineden konağa taşıyacağız.
Oturum oluşturmak için dosyaları kopyalayın:
Hyper-V ana bilgisayarında PowerShell'i Yönetici olarak açın.
kullanarak
New-PSSession
sanal makinede kalıcı bir PowerShell oturumu oluşturmak için aşağıdaki komutlardan birini çalıştırın.$s = New-PSSession -VMName <VMName> -Credential (Get-Credential) $s = New-PSSession -VMId <VMId> -Credential (Get-Credential)
İstendiğinde sanal makine için kimlik bilgilerini sağlayın.
Uyarı
14500 öncesi derlemelerde bir hata var. Kimlik bilgileri
-Credential
bayrağı ile açıkça belirtilmezse, konuktaki hizmet kilitlenir ve yeniden başlatılması gerekir. Bu sorunla karşılaşırsanız Hata : Uzak oturum sona ermiş olabilir bölümünde geçici çözüm yönergeleri sağlanır.Sanal makineye bir dosya kopyalayın.
C:\host_path\data.txt
öğesini konak makineden sanal makineye kopyalamak için şunu çalıştırın:Copy-Item -ToSession $s -Path C:\host_path\data.txt -Destination C:\guest_path\
Sanal makineden dosyayı ana bilgisayara kopyalayın.
Sanal makineden konağa
C:\guest_path\data.txt
kopyalamak için şu komutu girin:Copy-Item -FromSession $s -Path C:\guest_path\data.txt -Destination C:\host_path\
Kalıcı oturumu
Remove-PSSession
kullanarak durdurun.Remove-PSSession $s
Sorun giderme
PowerShell Direct aracılığıyla ortaya çıkarılmış küçük bir ortak hata iletileri kümesi vardır. Aşağıdaki bölümlerde en yaygın hata iletileri, bazı nedenler ve sorunları tanılamaya yönelik araçlar açıklanmaktadır.
-VMName veya -VMID parametreleri yok
Sorun:
Enter-PSSession
, Invoke-Command
veya New-PSSession
bir -VMName
veya -VMId
parametresi yoktur.
Olası nedenler:
En olası sorun, PowerShell Direct'in ana bilgisayar işletim sisteminiz tarafından desteklenmediğidir.
Aşağıdaki komutu çalıştırarak Windows derlemenizi de kontrol edebilirsiniz:
[System.Environment]::OSVersion.Version
Desteklenen bir derleme çalıştırıyorsanız PowerShell sürümünüz PowerShell Direct'i çalıştırmayabilir. PowerShell Direct ve JEA için ana sürüm 5 veya üzeri olmalıdır.
Aşağıdaki komutu çalıştırarak PowerShell sürüm derlemenizi de kontrol edebilirsiniz:
$PSVersionTable.PSVersion
Hata: Uzak oturum sona ermiş olabilir
Uyarı
Konak derlemeleri 10240 ile 12400 arasındaki Enter-PSSession için, aşağıdaki tüm hatalar "Uzak oturum sona ermiş olabilir" olarak belirtilmiştir.
Hata iletisi:
Enter-PSSession: Windows PowerShell'in işleyemediği bir hata oluştu. Uzak oturum sona ermiş olabilir.
Olası nedenler:
- Sanal makine var ancak çalışmıyor.
- Konuk işletim sistemi PowerShell Direct'i desteklemez. bkz. gereksinimleri.
- PowerShell henüz konukta kullanılamıyor
- İşletim sisteminin önyüklemesi tamamlanmamış
- İşletim sistemi düzgün önyüklenemiyor
- Bazı önyükleme zamanı olaylarının kullanıcı girişi gerekiyor
Konakta hangi VM'lerin çalıştığını denetlemek için Get-VM cmdlet'ini kullanabilirsiniz.
Hata iletisi:
New-PSSession: Windows PowerShell'in işleyemediği bir hata oluştu. Uzak oturum sona ermiş olabilir.
Olası nedenler:
- Yukarıda listelenen nedenlerden biri -- bunların tümü
New-PSSession
için eşit derecede geçerlidir. - Geçerli derlemelerde kimlik bilgilerinin açıkça
-Credential
ile aktarılması gereken bir hata. Bu durumda, tüm hizmet konuk işletim sisteminde kilitleniyor ve yeniden başlatılması gerekiyor. Oturumun Hala Enter-PSSession ile kullanılabilir olup olmadığını de kontrol edebilirsiniz.
Kimlik bilgisi sorununu geçici olarak çözmek için VMConnect kullanarak sanal makinede oturum açın, PowerShell'i açın ve aşağıdaki PowerShell'i kullanarak vmicvmsession hizmetini yeniden başlatın:
Restart-Service -Name vmicvmsession
Hata: Parametre kümesi çözümlenemiyor
Hata iletisi:
Enter-PSSession: Parametre kümesi belirtilen adlandırılmış parametreler kullanılarak çözümlenemez.
Olası nedenler:
-RunAsAdministrator
sanal makinelere bağlanırken desteklenmez.Bir Windows kapsayıcısına bağlanırken,
-RunAsAdministrator
bayrağı açık kimlik bilgileri olmadan Yönetici bağlantılarına izin verir. Sanal makineler konağa zımni yönetici erişimi vermediğinden, kimlik bilgilerini açıkça girmeniz gerekir.
Yönetici kimlik bilgileri, sanal makineye -Credential
parametresiyle girilerek veya istendiğinde el ile geçirilebilir.
Hata: Kimlik bilgisi geçersiz
Hata iletisi:
Enter-PSSession: Kimlik bilgisi geçersiz.
Olası nedenler:
- Konuk kimlik bilgileri doğrulanamadı
- Sağlanan kimlik bilgileri yanlıştı.
- Konukta kullanıcı hesabı yok (işletim sistemi daha önce önyükleme yapmamış)
- Yönetici olarak bağlanıyorsanız: Yönetici etkin kullanıcı olarak ayarlanmamıştır. Yerleşik Yönetici Hesabını Etkinleştirme ve Devre Dışı Bırakma bölümünde daha fazla bilgi edinin.
Hata: Giriş VMName parametresi hiçbir sanal makineye çözümlenmiyor.
Hata iletisi:
Enter-PSSession: Giriş VMName parametresi hiçbir sanal makineye çözümlenmez.
Olası nedenler:
- Hyper-V Yöneticisi değilsin.
- Sanal makine yok.
Kullandığınız kimlik bilgilerinin Hyper-V yönetici rolüne sahip olup olmadığını denetlemek ve konakta yerel olarak çalıştırılan ve önyüklenen VM'leri görmek için Get-VM cmdlet'ini kullanabilirsiniz.
Örnekler ve Kullanıcı Kılavuzları
PowerShell Direct, Yeterli Yönetimi (JEA) destekler.
GitHub'da örneklere göz atın.