Uzak cmd. Bir ağ üzerinden uzak bilgisayarlarda konsol komutlarını yürütme

PsExec için bir yardımcı programdır uzaktan yürütme komutlar

Uzak bir bilgisayarda komut çalıştırmak oldukça yaygın bir iştir. Bu, sistem ayarlarını değiştirmek, programları yüklemek veya kaldırmak ve çok daha fazlası için gerekli olabilir. Bu tür sorunları çözmek için System Center Configuration Manager gibi ciddi yazılım sistemlerinden mütevazı komut satırı yardımcı programlarına kadar birkaç farklı araç vardır. Bu yardımcı programlardan biri bu makalede tartışılacaktır.

PsExec yardımcı programı, Sysinternals'ın PsTools paketinin bir parçasıdır. Uzak bilgisayarlarda komut çalıştırmanıza izin verir ve sisteme kurulum gerektirmez. Yardımcı programı kullanmak için, yürütülebilir dosyaların (örn. C:\Windows\system32) bulunduğu klasöre kopyalamanız ve herhangi bir komut satırı kabuğundan çalıştırmanız yeterlidir: Cmd veya PowerShell.
Programın prensibi aşağıdaki gibidir: yürütülebilir dosya PsExec.exe'nin kaynaklarında başka bir yürütülebilir dosya var - bir Windows hizmeti olan PSEXESVC. Komutu çalıştırmadan önce, PsExec bu kaynağı uzak bilgisayarın Admin$ (C:\Windows) gizli yönetim klasörüne, C:\Windows\system32\psexesvc.exe dosyasına açar.

Not. Anahtarı kullanıyorsanız -C programa yürütülebilir dosyaları bu sisteme kopyalamasını söyledi, onlar da bu klasöre kopyalanacaklar.

Kopyalama tamamlandıktan sonra PsExec, hizmetleri yönetmek için Windows İşlevleri API'sini kullanarak hizmeti yükler ve başlatır. Ardından, PSEXESVC'yi başlattıktan sonra, veri aktarımı (komutların girilmesi ve sonuçların alınması) için onunla PsExec arasında bir bağlantı kurulur. Tamamlandığında, PsExec hizmeti durdurur ve hedef bilgisayardan kaldırır.

PsExec için sözdizimi aşağıdaki gibidir:

psexec \\bilgisayar [-u kullanıcı [-p parolası]] programı [argümanlar]

Kullanıcı adı ve parola atlanabilir, bu durumda uzak işlem PsExec programıyla aynı hesap altında çalışacaktır. Ancak, uzak işlem bir kimliğe bürünme olduğundan, uzak sistemdeki ağ kaynaklarına erişimi olmayacaktır. Bir kullanıcı adı belirtirseniz, uzak işlem belirtilen hesap altında başlayacak ve verilen hesapla uzak sistemin aynı ağ kaynaklarına erişim kazanacaktır. Ancak şifrenin uzak sisteme açık metin olarak gönderildiğini unutmayın.

Örnek olarak, uzak bilgisayar SRV1'deki dns önbelleğini temizleyelim:

psexec \\SRV1 ipconfig /flushdns

Komut, kimlik bilgileriniz altında SRV1 bilgisayarında çalıştırılacaktır. ipconfig tamamlandığında, tüm metin çıktıları bilgisayarınıza gönderilir ve ayrıca bir hata kodu döndürülür. Komut başarılıysa, 0 olacaktır.

Birkaç komut yürütmeniz gerekiyorsa, uzak bilgisayarla etkileşimli bir oturum oluşturmak daha iyidir. Bunu yapmak için komutu girin psexec \\SRV1 cmd'si. Şimdi yerel bilgisayara girilen komutlar, uzak bilgisayar SRV1'de yürütülecektir.


PsExec, aynı anda birden çok bilgisayarda bir komut çalıştırmanıza izin verir. Bunu yapmak için bilgisayar adlarını virgülle ayırarak girebilirsiniz: psexec \\SRV1,SRV2 veya bunları bir metin dosyasına kaydedin ve ardından adresini belirtin: psexec@c:\comp.txt. Bilgisayar adı yerine yıldız işareti koyarsanız, şöyle: psexec \\*, ardından komut etki alanındaki tüm bilgisayarlarda yürütülür.


Ve PsExec yardımcı programını kullanmanın başka bir ilginç yolu. Bir bilgisayar adı belirtmezseniz, komut varsayılan olarak yerel sistemde çalışır. anahtarı kullanma -s programları sistem hesabı altında çalıştırabilirsiniz. Örneğin, bir komut satırı oturumu başlatalım: psexec -s cmd ve sonra komut ben kimimŞu anda hangi kullanıcının altında çalıştığımızı kontrol edelim. Bu özellik, programlarda hata ayıklamak veya gizli SAM ve SECURITY kayıt defteri anahtarlarına erişmek için yararlı olabilir.


Peki, programın tuşları hakkında birkaç söz. Her şeyi tarif etmeyeceğim, size en ilginçlerinden bahsedeceğim:

Belirtilen program, yürütülmek üzere uzak sisteme kopyalanır. Örneğin:

psexec \\SRV1 -c test.exe

Bu parametre ayarlanmazsa, uygulama uzak bilgisayarın sistem klasöründe bulunmalıdır. Uzak bilgisayarda böyle bir program zaten varsa ve sistem dizininde değilse, bunun tam yolunu belirtmelisiniz (program adı boşluk içeriyorsa, tırnak içine alınmalıdır):

psexec \\SRV1 "c:\program files\test.exe"

Anahtar ile birlikte ise -C anahtarı kullan -F o zaman program zaten uzaktaki sistemde olsa bile üzerine yazılacaktır. Ve bir anahtarla -v yalnızca programın kopyalanan sürümü sistemde kurulu olandan daha yeniyse üzerine yazılacaktır.

Etkileşimli modda program çalışması. Varsayılan olarak, PsExec komutları gizli modda yürütür, yani komutun yürütüldüğü sistemde hiçbir pencere veya iletişim kutusu görüntülenmez. Ancak, bunu anahtarla değiştirme seçeneği vardır. -i. Bundan sonra, pencerelerin görüntüleneceği oturum sayısını belirtebilirsiniz veya belirtemezsiniz, ardından arayüz konsol oturumunda görüntülenecektir.

Uygulamanın tamamlanmasını beklememeyi belirtir. Bu durumda, konsol yardımcı programından çıktı verileri almayacağız, ancak önceki komutun tamamlanmasını beklemeden sonrakileri çalıştırabileceğiz. Bu ayar yalnızca etkileşimli olmayan uygulamalar çalıştırılırken kullanılmalıdır.

Programı çalıştırmak için kullanılır. içinde gerekli olabilir işletim sistemleri Sistem ayarlarında değişiklik yapan bazı programları (örneğin, regedit) çalıştırmak için Windows Vista ve üzeri.

Ve bu anahtarın yardımıyla tam tersine otoriteyi düşürebilirsiniz. İşlem başladığında, Yöneticiler grubuna ait olup olmadığına bakılmaksızın kullanıcıya sınırlı haklar verilir ("Yöneticiler" grubunun hakları iptal edilir ve kullanıcıya yalnızca "Kullanıcılar" grubuna atanan haklar verilir) .

Tamamlamak arkaplan bilgisi Programın tüm tuşları hakkında sadece komutu girerek elde edilebilir psexec içinde Komut satırı parametresiz.

Telnet gibi yardımcı programlar ve Symantec'in PC Anywhere'i gibi uzaktan yönetim programları, programları uzak sistemlerde çalıştırmanıza izin verir, ancak bunların yüklenmesi o kadar kolay değildir çünkü ayrıca bir istemci yüklemeniz gerekir. yazılım erişilmesi gereken uzak sistemlerde. PsExec, Telnet'in hafif bir sürümüdür. İstemci yazılımını manuel olarak kurmak zorunda kalmadan, etkileşimli bir konsol uygulama arabiriminin tüm gücüyle uzak sistemlerde işlemleri çalıştırmanıza olanak tanır. PsExec'in ana avantajı, uzak sistemlerde etkileşimli olarak bir komut satırı arabirimini çağırma ve IpConfig gibi araçları uzaktan çalıştırma yeteneğidir. Yerel bilgisayar ekranında uzak bir sistem hakkındaki bilgileri görüntülemenin tek yolu budur.

Not. Bazı virüs tarayıcıları, bu programlardan bir veya daha fazlasına "uzaktan yönetici" virüsü bulaştığını bildirmektedir. PsTools paketinde yer alan programların hiçbiri virüs içermez, ancak virüsler tarafından kullanılmıştır ve bu uyarılara neden olan şeydir.

Kurulum

PsExec programını yürütülebilir klasöre kopyalamanız yeterlidir. psexec komutunu girdiğinizde, komutun sözdizimi hakkında yardım görüntülenir.

PsExec, 64 bit işletim sistemi sürümleri dahil olmak üzere Windows Vista, NT 4.0, Win2000, Windows XP ve Server 2003 işletim sistemlerinde çalışır

kullanım

Windows IT Pro Magazine'in Temmuz 2004 sayısında Mark Russinovich tarafından yazılan bir makale, programla çalışmak için ek yöntemleri açıklar. psexec.

kullanım: psexec [\\bilgisayar[,bilgisayar2[,...] | @file][-u kullanıcı [-p şifre]][-ns][-l][-s|-e][-x][-i [oturum]][-c [-f|-v]] [-w dizini][-d][-<приоритет>][-a n,n,... ] program [argümanlar]

bir bilgisayar

PsExec'e uygulamayı belirtilen bilgisayarda veya bilgisayarlarda çalıştırmasını söyler. Bilgisayar adı belirtilmezse, PsExec uygulamayı yerel sistemde çalıştırır; bilgisayar adı yerine yıldız işareti (\\*) belirtilirse, PsExec uygulamayı geçerli etki alanındaki tüm bilgisayarlarda çalıştırır.

@dosya

PsExec'e uygulamayı belirtilen metin dosyasında listelenen tüm bilgisayarlarda çalıştırmasını söyler.

Uygulamanın çalıştırılabileceği işlemciler virgülle ayrılır ve işlemciler 1'den başlayarak numaralandırılır. Örneğin, uygulamayı iki ve dördüncü işlemcilerde çalıştırmak için "-a 2,4" yazın.

Belirtilen program, yürütülmek üzere uzak sisteme kopyalanır. Bu parametre ayarlanmazsa, uygulama uzak sistemin sistem klasöründe bulunmalıdır.

Uygulamanın tamamlanmasını beklememeyi belirtir. Bu ayar yalnızca etkileşimli olmayan uygulamalar çalıştırılırken kullanılmalıdır.

Belirtilen hesap profili yüklenmedi.

Belirtilen program, dosya uzaktaki sistemde zaten mevcut olsa bile uzak sisteme kopyalanır.

Çalıştırılan program, uzak sistemdeki belirtilen oturumun masaüstüne erişim kazanır. Oturum ayarlanmazsa, işlem bir konsol oturumunda çalışır.

İşlem başladığında, kullanıcıya sınırlı haklar verilir (Administrators grubunun hakları iptal edilir ve kullanıcıya yalnızca Users grubuna atanan haklar verilir). Windows Vista'da süreç şu şekilde başlar: düşük seviye güvenilirlik.

Uzak bilgisayarlara bağlantı gecikmesini (saniye cinsinden) ayarlamanızı sağlar.

Kullanıcı adı için isteğe bağlı bir parola belirlemenizi sağlar. Bu parametre atlanırsa, bir şifre girmeniz istenecek ve şifre ekranda görüntülenmeyecektir.

Uzak işlem, sistem hesabından çalışır.

Uzak sistemde oturum açmak için isteğe bağlı bir kullanıcı adı belirlemenizi sağlar.

Belirtilen dosya, yalnızca sürüm numarası daha yüksek veya daha yeniyse, mevcut dosya yerine uzak sisteme kopyalanır.

İşlem için bir çalışma dizini (uzak sistem içindeki yol) belirlemenizi sağlar.

Winlogon masaüstünde kullanıcı arabirimini görüntüler (yalnızca yerel sistem).

-öncelik(öncelik)

Süreç için farklı öncelikler belirlemenizi sağlar: -düşük (düşük), -normalin altı (ortalamanın altı), -normalin üstü (ortalamanın üstü), -yüksek (yüksek) veya -gerçek zamanlı (gerçek zamanlı).

program

Çalıştırılacak programın adı.

argümanlar

Geçilecek argümanlar (dosya yollarının hedef sistemde yerel yollar olarak belirtilmesi gerektiğini unutmayın).

Boşluk içeren bir uygulama adı belirtmek için psexec \\marklap "c:\longname\app.exe" gibi tırnak işaretleri kullanın. Girilen veriler "Enter" tuşuna bastığınızda uzak sisteme aktarılır, uzaktan işlemi tamamlamak için Ctrl-C tuş bileşimine basmanız gerekir.

Kullanıcı adı belirtilmezse, uzak işlem PsExec programıyla aynı hesap altında çalışır. Ancak, uzak işlem bir kimliğe bürünme olduğundan, uzak sistemdeki ağ kaynaklarına erişimi olmayacaktır. Bir kullanıcı adı belirtilirse, uzak işlem belirtilen hesap altında çalışır ve uzak sistemdeki hesapla aynı ağ kaynaklarına erişir. Parolanın uzak sisteme düz metin olarak gönderildiğini unutmayın.

Yerel sisteme erişirken, PsExec yönetici hakları gerektirmediğinden Runas yerine PsExec'in bu sürümü kullanılabilir.

Örnekler

Bu komut, \\marklap sisteminde etkileşimli bir komut satırı arabirimini çağırır:

psexec \\marklap cmd'si

Bu komut, /all seçeneğiyle uzak sistemde IpConfig programını çalıştırır ve elde edilen verileri yerel sistem ekranında görüntüler:

psexec \\marklap ipconfig /tümü

Bu komut, test.exe programını uzaktaki sisteme kopyalar ve etkileşimli olarak çalıştırır.

psexec \\marklap -c test.exe

Böyle bir program uzaktaki sistemde zaten kuruluysa ve sistem dizininde değilse, bu programın tam yolunu belirtin

psexec \\marklap c:\bin\test.exe

Bu komut, SAM ve SECURITY kayıt defteri anahtarı verilerini görüntülemek için sistem hesabından etkileşimli olarak Regedit'i çalıştırır:

psexec -i -d -s c:\windows\regedit.exe

Bu komut çağırmak için kullanılır. internet programları Sınırlı bir kullanıcı olarak Explorer:

psexec -l -d "c:\program dosyaları\internet explorer\iexplore.exe"

Bu makalede, ağdaki uzak bilgisayarlarda konsol komutlarının nasıl çalıştırılacağı anlatılmaktadır, sistem yöneticileri için çok faydalı bazı komutlar örnek olarak verilmiştir.

2 uzak konsol komut yürütme aracı kullanıyorum: PsExec ve WinRM, her birinin kendi avantajları vardır.

psexec

Başlıkta ortaya konan problemin harika çözümlerinden biri, büyük Mark Russinovich'in PsExec programını kullanmaktır.

Program, istemci-sunucu ilkesine göre çalışır: yerel makinede çalışan ve uzak bilgisayardaki sunucuya komutlar gönderen bir istemci. Bu programın bir özelliği, sunucu bölümünün komut yürütülmeden hemen önce otomatik olarak yüklenmesi ve ardından kaldırılmasıdır. Bu nedenle, uzak makinelerde komut yürütmek için yönetici haklarına sahip olmak yeterlidir.

PsExec, uzak bilgisayarla aynı etki alanında bulunan bir yönetici olarak çalıştırılırsa, kimlik bilgileri bile gerekmez. Aksi takdirde, komut satırında belirtilebilirler veya PsExec bunları ister. PsExec, Windows 2000'den 64-bit Windows Server 2008 R2'ye kadar olan işletim sistemlerinde çalışır.

Aşağıdaki özellikler PsExec'te çok kullanışlıdır:

  • Bir grup bilgisayarda komut çalıştırma. Örnek: Aşağıdaki komut, en son grup ilkelerini zorlamanıza izin verir:
    psexec @group.txt gpupdate /force
  • Komutları sistem hesabı olarak çalıştırın. Örnek: Aşağıdaki komut, uzak sistemi güncellemeleri kontrol etmeye zorlayacaktır:
    psexec \\bilgisayar -s wuauclt /detectnow
  • Yürütmeden önce çalışan bir programı uzak bir bilgisayara kopyalama. Örnek: Aşağıdaki komut, yeniden başlatmadan bu bilgisayarın bir Active Directory güvenlik grubuna (erişim belirteci) üyeliğini güncelleyecektir:
    psexec \\bilgisayar -c -s klist.exe temizleme

Windows'ta yerleşik konsol komutlarının komut dosyalarını ve özelliklerini kullanırsanız, bu programın kullanışlılığını abartmak zordur.

Windows Uzaktan Yönetim

Başlangıçta, Donanım Yönetimi bileşeninin bir parçası olarak Windows Server 2003 R2'de tanıtılan, uzaktan donanım yönetimine yönelik bir sunucu teknolojisiydi, ancak Microsoft yakın zamanda PowerShell 2.0 ve WinRM 2.0'ı içeren ve istemci işletim sistemlerinde şu şekilde yüklenen Windows Yönetim Çerçevesi paketini yayımladı: bir güncelleme. Ayrıntılar KB968929 makalesinde bulunabilir.

WinRM'nin güzelliği, isteğe bağlı bir işletim sistemi yükseltmesi olarak WSUS aracılığıyla bir etki alanı ortamında devreye alma kolaylığı ve PowerShell'i kullanmanın getirdiği güçtür.

WinRM kullanımı 2 komutla gerçekleşir.

winrm.cmd WinRM istemcisi ve sunucusu için ayarları ve tanılamayı yapılandırmak için kullanılır.

WinRM sunucusunun komutları kabul etmeye başlaması için Windows Uzaktan Yönetim hizmetinin çalışıyor olması ve ilk yapılandırmasının yapılmış olması gerekir. Komutu kullan

yerel makinede winrm quickconfig veya kulaklarla bir numara
psexec -s \\servername winrm quickconfig sistem hesabı olarak PsExec kullanarak ağ üzerinden.

WinRM hizmetini otomatik olarak başlatmanızı ve uzak bağlantılara izin vermenizi isteyecektir, kabul edin ;)

İstemci bilgisayarınızla aynı etki alanında yer almayan bir WinRM sunucusuna (yani komutları kabul eden sunucu kısmı) başarılı bir şekilde bağlanmak için, bu hedef sunucuyu istemci üzerindeki “güvenilirler listesine” aşağıdakilerle eklemeniz gerekir. emretmek:

winrm set winrm/config/client @(TrustedHosts="servername") , burada sunucuadı yerine bir IP adresi veya * (yıldız) belirtebilirsiniz.

Yerleşik yönetici olarak çalışmayan Windows Vista ve Windows 7 kullanıcıları için (ki bu genellikle böyledir), aşağıdaki komutu çalıştırmanız gerekir.

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f ekleyin

Varsayılan olarak, bir istemciden aynı anda 5 WinRM bağlantısı sınırı vardır, bu sayıyı artırmak için komutu çalıştırın

winrm s winrm/config/winrs @(MaxShellsPerUser="X")

winrs.exe- sunucu tarafına istek göndermek için bir istemci. Örnek: Aşağıdaki komut, uzak sistemi yeniden başlatmaya zorlayacaktır...

winrs -r:sunucu adı kapatma /r /t 0

Etki alanı ortamında, komut gönderilirken komutu başlatan kullanıcının kimlik bilgileri kullanılır. Başka bir kullanıcı adına komut göndermek için -u:user -p:pass anahtarları kullanılır. Örnek: Aşağıdaki komut, uzak sistemdeki DNS adlarının yerel önbelleğini temizleyecektir.

winrs -r:sunucuadı -u:kullanıcı -p:ipconfig /flushdns geçişi