Come configurare smartphone e PC. Portale informativo
  • casa
  • Errori
  • Come connettersi dalla riga di comando di un computer remoto. PsExec - un'utilità per l'esecuzione di comandi remoti

Come connettersi dalla riga di comando di un computer remoto. PsExec - un'utilità per l'esecuzione di comandi remoti

Utilità, come Telnet e programmi telecomando, come PC Anywhere di Symantec, consentono di eseguire programmi su sistemi remoti, ma non sono così facili da installare perché è necessario installare anche un client Software su quei sistemi remoti a cui è necessario accedere. PsExec è una versione leggera di Telnet. Consente di eseguire processi su sistemi remoti utilizzando tutte le funzionalità di un'interfaccia interattiva. applicazioni console senza dover installare manualmente il software client. Il vantaggio principale di PsExec è la possibilità di effettuare chiamate modalità interattiva interfaccia a riga di comando su sistemi remoti ed eseguire strumenti come IpConfig in remoto. Questo l'unico modo Schermo computer locale informazioni sul sistema remoto.

Nota. Alcuni scanner antivirus segnalare che uno o più di questi programmi sono stati infettati dal virus "admin remoto". Nessuno dei programmi inclusi nella suite PsTools contiene virus, ma sono stati utilizzati da virus, che è ciò che causa questi avvisi.

Installazione

Basta copiare il programma PsExec nella cartella eseguibile. Quando si immette il comando psexec, viene visualizzata la guida sulla sintassi del comando.

Il programma PsExec viene eseguito sistemi operativi Windows Vista, NT 4.0, Win2000, Windows XP e Server 2003, comprese le versioni del sistema operativo a 64 bit

Utilizzo

In un articolo di Mark Russinovich nel numero Registro di Windows IT Pro Magazine luglio 2004 descrive metodi aggiuntivi per lavorare con il programma psexec.

utilizzo: psexec [\\computer[,computer2[,...] | @file][-u utente [-p password]][-n s][-l][-s|-e][-x][-i [sessione]][-c [-f|-v]] [-w cartella][-d][-<приоритет>][-a n,n,... ] programma [argomenti]

un computer

Indica a PsExec di eseguire l'applicazione dato computer o computer. Se il nome del computer non è specificato, PsExec eseguirà l'applicazione su sistema locale, tuttavia, se viene specificato un carattere asterisco (\\*) invece del nome del computer, PsExec eseguirà l'applicazione su tutti i computer nel dominio corrente.

@file

Indica a PsExec di eseguire l'applicazione su tutti i computer elencati nel file di testo specificato.

I processori su cui è possibile eseguire l'applicazione sono separati da virgole e i processori sono numerati a partire da 1. Ad esempio, per eseguire l'applicazione sui processori due e quattro, digitare "-a 2,4"

Il programma specificato viene copiato in sistema remoto per l'esecuzione. Se questo parametro non è impostato, l'applicazione deve essere in cartella di sistema sistema remoto.

Specifica di non attendere il completamento dell'applicazione. Questa impostazione deve essere utilizzata solo quando si eseguono applicazioni non interattive.

Profilo specificato account non sta scaricando.

Il programma specificato viene copiato nel sistema remoto, anche se il file esiste già nel sistema remoto.

Il programma eseguito ottiene l'accesso al desktop della sessione specificata sul sistema remoto. Se la sessione non è impostata, il processo viene eseguito in una sessione della console.

All'avvio del processo, all'utente viene fornito diritti limitati(i diritti del gruppo Amministratori vengono revocati e all'utente vengono concessi solo i diritti assegnati al gruppo "Utenti"). In Windows Vista, il processo inizia con basso livello affidabilità.

Consente di impostare il ritardo di connessione ai computer remoti (in secondi).

Consente di specificare una password facoltativa per il nome utente. Se questo parametro viene omesso, verrà richiesto di inserire una password e la password non verrà visualizzata sullo schermo.

Il processo remoto viene eseguito dall'account di sistema.

Consente di specificare un nome utente facoltativo per l'accesso al sistema remoto.

Il file specificato viene copiato sul sistema remoto anziché su quello esistente solo se il suo numero di versione è superiore o più recente.

Consente di specificare una directory di lavoro (percorso all'interno del sistema remoto) per il processo.

Visualizza l'interfaccia utente sul desktop Winlogon (solo sistema locale).

-priorità(priorità)

Consente di impostare diverse priorità per il processo: -low (basso), -belownormal (sotto la media), -abovenormal (sopra la media), -high (alto) o -realtime (tempo reale).

programma

Il nome del programma da eseguire.

argomenti

Argomenti da passare (si noti che i percorsi dei file devono essere specificati come percorsi locali nel sistema di destinazione).

Per specificare un nome di applicazione che contiene spazi, utilizzare le virgolette, ad esempio psexec \\marklap "c:\longname\app.exe". I dati inseriti vengono trasferiti al sistema remoto quando si preme il tasto "Invio", per completare il processo remoto è necessario premere la combinazione di tasti Ctrl-C.

Se non viene fornito alcun nome utente, allora processo remoto viene eseguito dallo stesso account del programma PsExec. Tuttavia, poiché il processo remoto è una rappresentazione, non avrà accesso alle risorse di rete sul sistema remoto. Se viene specificato un nome utente, il processo remoto viene eseguito con l'account specificato e accede alle stesse risorse di rete sul sistema remoto dell'account. Si noti che la password viene inviata al sistema remoto in chiaro.

Quando si accede al sistema locale, questa versione di PsExec può essere utilizzata al posto di Runas perché PsExec non richiede diritti amministrativi.

Esempi

Questo comando chiama interfaccia interattiva riga di comando nel sistema \\marklap:

psexec \\marklap cmd

Questo comando esegue il programma IpConfig sul sistema remoto con l'opzione /all e visualizza i dati risultanti sullo schermo del sistema locale:

psexec \\marklap ipconfig /all

Questo comando copia il programma test.exe nel sistema remoto e lo esegue in modo interattivo.

psexec \\marklap -c test.exe

Se tale programma è già installato sul sistema remoto e non si trova nella directory di sistema, specificare il percorso completo di questo programma

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

Questo comando viene eseguito in modo interattivo dall'account di sistema Programma Regedit Per visualizzare i dati per le chiavi di registro SAM e SECURITY:

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

Questo comando è usato per chiamare Programmi Internet Explorer come utente limitato:

psexec -l -d "c:\programmi\internet explorer\iexplore.exe"

C'era un'attività per eseguire alcune operazioni utilizzando la riga di comando su un altro computer, di per sé andare dall'utente per avviare la riga di comando e guidare i comandi - non il nostro metodo, dobbiamo avviare la riga di comando senza alzarci dalla sedia calcolatore remoto ed eseguire azioni necessarie in riga di comando. Naturalmente, un'azione simile può essere eseguita utilizzando i programmi collegamento remoto, ma questo non è sempre conveniente e richiede a te e all'utente di avere un programma simile ( client-server). La procedura per connettersi alla riga di comando di un altro computer può essere eseguita molto più semplicemente utilizzando il comando PSEXEC.

psexecè un'utilità della riga di comando con la possibilità di richiamare in modo interattivo un'interfaccia della riga di comando su sistemi Windows remoti ed eseguire vari comandi in remoto.

Questa utilità è installata solo sul computer dell'amministratore. Per installarlo è necessario scaricarlo, ecco il link a Sito ufficiale Microsoft . Dopo aver scaricato l'archivio, è necessario decomprimerlo, trovare il file PsExec.exe nella cartella decompressa. Fare clic su di esso due volte, verrà visualizzata una finestra con contratto di licenza, stampa " Essere d'accordo".

Analizziamo la sintassi del comando:

psexec [\\computer[,computer2[,...] | @file][-u utente [-p password]][-n s][-l][-s|-e][-x][-i [sessione]][-c [-f|-v]] [-w directory][-d][-<приоритет>][-a n,n,... ] programma [argomenti]

un computer Indica a PsExec di eseguire l'applicazione sul computer o sui computer specificati. Se il nome del computer non è specificato, PsExec eseguirà l'applicazione sul sistema locale; se il nome del computer è un asterisco (\\*), PsExec eseguirà l'applicazione su tutti i computer nel dominio corrente.

@file Indica a PsExec di eseguire l'applicazione su tutti i computer elencati nel file di testo specificato.

-un I processori su cui è possibile eseguire l'applicazione sono separati da virgole e i processori sono numerati a partire da 1. Ad esempio, per eseguire l'applicazione sui processori due e quattro, digitare "-a 2,4"

-c Il programma specificato viene copiato nel sistema remoto per l'esecuzione. Se questo parametro non è impostato, l'applicazione deve trovarsi nella cartella di sistema del sistema remoto.

-d Specifica di non attendere il completamento dell'applicazione. Questa impostazione deve essere utilizzata solo quando si eseguono applicazioni non interattive.

-e Il profilo dell'account specificato non è caricato.

-f Il programma specificato viene copiato nel sistema remoto, anche se il file esiste già nel sistema remoto.

-io Il programma eseguito ottiene l'accesso al desktop della sessione specificata sul sistema remoto. Se la sessione non è impostata, il processo viene eseguito in una sessione della console.

-l All'avvio del processo, all'utente vengono concessi diritti limitati (i diritti del gruppo Administrators vengono revocati e all'utente vengono concessi solo i diritti assegnati al gruppo Users). Su Windows Vista, il processo inizia con un livello di affidabilità basso.

-n Consente di impostare il ritardo di connessione ai computer remoti (in secondi).

-p Consente di specificare una password facoltativa per il nome utente. Se questo parametro viene omesso, verrà richiesto di inserire una password e la password non verrà visualizzata sullo schermo.

-S Il processo remoto viene eseguito dall'account di sistema.

-u Consente di specificare un nome utente facoltativo per l'accesso al sistema remoto.

- v Il file specificato viene copiato sul sistema remoto anziché su quello esistente solo se il suo numero di versione è superiore o più recente.

-w Consente di specificare una directory di lavoro (percorso all'interno del sistema remoto) per il processo.

-X Visualizza l'interfaccia utente sul desktop Winlogon (solo sistema locale).

-priorità(priorità) Consente di impostare diverse priorità per il processo: -low (basso), -belownormal (sotto la media), -abovenormal (sopra la media), -high (alto) o -realtime (tempo reale).

programma Il nome del programma da eseguire.

argomenti Argomenti da passare (si noti che i percorsi dei file devono essere specificati come percorsi locali nel sistema di destinazione).

Esempi di lavoro di gruppo PSEXEC:

1) Per avviare la riga di comando di un altro computer, devi entrare
psexec \\<имя компьюетра>cmd

per esempio:
psexec \\WIN782cmd


dopodiché puoi inserire i comandi di cui hai bisogno.

2) Per eseguire qualsiasi programma (in questo esempio test.exe) sul computer remoto, è necessario eseguire il comando (questo comando copia il programma test.exe sul sistema remoto e lo esegue in modo interattivo).

psexec \\<имя компьютера>-c prova.exe

per esempio:
psexec \\WIN782-c prova.exe

3) Se tale programma è già installato sul sistema remoto e non si trova nella directory di sistema, specificare il percorso completo di questo programma

psexec \\WIN782 c:\temp\test.exe

Questa lezione mostrerà come eliminare un file tramite la riga di comando in Windows(7, 8, XP, Vista). Questo aiuterà i comandi DEL o ERASE, che vengono usati quando non puoi nel solito modo eliminare un file. Per , DEL e ERASE non funzioneranno.

Naturalmente, per cominciare. Con questa azione otterrai i migliori risultati.

Se utilizzi questa lezione, il file verrà eliminato immediatamente senza essere inviato al cestino.

In cmd digitare DEL /? e premere Invio per visualizzare in anteprima le opzioni del comando. Se fatto correttamente, vedrai delle spiegazioni (schermata sotto).

Utilizzo di cmd all'avvio di Windows

A volte diventa necessario andare su cmd prima di avviare il sistema. Relativo al fatto che malware bloccare un accesso riuscito, o settore di avvio sistema è danneggiato, i seguenti passaggi ti aiuteranno:

  1. Apri il prompt dei comandi all'avvio di Windows
  2. Nel tipo cmd diskpart e premi Invio
  3. Successivamente, è necessario scrivere il volume dell'elenco e premere di nuovo Invio (vedi screenshot sotto). Ciò ti consentirà di vedere la lettera dell'unità in cui desideri eliminare il file.
  4. Dopo aver ricevuto le informazioni, digitare exit e fare clic su Invio.

Ora sentiti libero di inserire le opzioni per i comandi di rimozione, che sono descritti di seguito.

Con queste azioni, eliminerai qualsiasi file sul computer utilizzando la riga di comando.

Eliminazione di un file specifico

Per rimuovere un elemento specifico, è necessario conoscerne il nome e l'estensione. Altrimenti, aumenta la probabilità di eliminare la cosa sbagliata!

In cmd, digita il seguente comando e premi invio:

DEL /F /S /Q /A "Percorso completo dell'elemento con estensione"

Ad esempio, se voglio eliminare con il nome "delete" e con l'estensione (.bat), che si trova sull'unità C nella cartella "trash", devo inserire il comando:

DEL /F /S /Q /A "C:\trash\delete.bat"

Eliminazione di tutti i file con e senza conferma dalla riga di comando

In questo caso, è necessario confermare o rifiutare le azioni con le lettere (Y - sì / N - no) per eliminare tutti i file nella directory principale e nelle sottocartelle.

Per confermare, utilizzare la seguente sintassi:

DEL /F /S /Q /A "Percorso completo della cartella\*"

Se devo eliminare tutti i file sull'unità D dalla cartella "to the trash", che contiene molte altre directory e file, userò il comando:

DEL /F /S /Q /A "D:\aggiungi al carrello\*"

In modo da eliminare il file dalla riga di comando con conferma, /P viene aggiunto ai parametri e ha il seguente aspetto:

DEL /P /F /S /A "D:\esperimento\*"

È possibile eliminare tutti i file con una determinata estensione, quindi il comando assumerà la forma:

DEL /F /S /Q /A "Percorso completo della cartella\*.estensione"

Particolarmente utile quando ce ne sono molti dello stesso tipo elementi inutili, che non sono un'opzione da ordinare manualmente, ma puoi semplicemente eliminare un gruppo da cmd.

A giusto approccio, potere eliminare il file tramite la riga di comando, in pochi secondi. Spero che i consigli siano stati utili. Se sei interessato a cmd, ti consiglio di leggere il materiale, che non sarà meno interessante.

  • amministrazione del server,
  • Amministrazione di sistema ,
  • terminologia informatica
  • Al giorno d'oggi anche per i cani ha inventato il telecomando .


    Tornando al ciclo "Admin Abstract", vorrei parlare delle opzioni di lancio programmi eseguibili sui computer remoti. Questo articolo interesserà coloro che non dispongono ancora di sistemi gestione centralizzata, ma c'è già una comprensione della noiosità di bypassare manualmente workstation e server. O chi non è interessato a soluzioni chiavi in ​​mano per antisportività.


    Come motivo per cui è necessario un tale lancio di programmi, si può citare la recente isteria con Petya\Not-Petya, quando tutti si sono affrettati a controllare/disabilitare e scaricare gli aggiornamenti. Sì, e puoi anche fare un inventario o installare una patch urgente usando questo metodo.


    C'era una volta, ho trovato lavoro in un'organizzazione durante l'epidemia di Kido \ Conficker. Più in modo semplice per scoprire se tutto va bene nell'IS dell'azienda, c'era una simpatica utility di Kaspersky chiamata Kido Killer, che verificava la presenza di un virus e lo eliminava. Avvia il programma un buon centinaio Non è stato divertente usare le macchine con le mani, quindi ho dovuto familiarizzare con l'automazione.

    Se nei sistemi operativi * nix per l'avvio remoto, di norma viene utilizzato SSH, quindi Modi di Windows eseguire programmi e script è davvero come la sabbia nel deserto. Analizzerò le opzioni principali, sia note che esotiche. Non toccherò cose così ovvie come un server telnet, soprattutto perché Microsoft lo ha già rimosso dai moderni sistemi operativi.

    Modi vecchi, collaudati nel tempo

    PSexec

    Questa è probabilmente la prima cosa che mi viene in mente quando in questione di avvio remoto programmi. L'utilità di Mark Russinovich è stata utilizzata sin dai tempi di Windows NT ed è ancora utilizzata. Oltre alla funzione principale, puoi usarlo sia come Runas che per eseguire programmi in una sessione utente server terminale. PSexec consente inoltre di impostare i core del processore su cui verrà eseguito il programma e la sua priorità nel sistema.


    Ad esempio, vediamo se è stato installato un aggiornamento che chiude la clamorosa vulnerabilità SMB nell'elenco dei computer:


    psexec @computers.txt /u USER /p PASS cmd.exe /v /c ""systeminfo | trova "KB4012212" || echo !nomecomputer! >> \\server\condivisione\log.txt"""

    Il file computers.txt contiene un elenco di computer. Puoi utilizzare \\* per l'esecuzione nell'intero dominio. Il file \\server\share\log.txt conterrà i nomi delle workstation o dei server senza l'aggiornamento. Se ci sono computer con *nix a bordo nel dominio o non c'è accesso al file amministrativo risorsa di rete Amministratore$— il comando non verrà eseguito su questa macchina, ma l'elaborazione continuerà. Per evitare che lo script si blocchi a ogni tentativo di connessione, puoi impostare un timeout utilizzando il tasto -n.


    Se il computer è spento, non lo sapremo. Pertanto, è meglio verificare preventivamente la disponibilità delle macchine o raccogliere informazioni sull'esito positivo o negativo in un file.


    Per contro PSexec può essere attribuito al fatto che, per la sua comodità e popolarità, viene spesso utilizzato dagli autori di virus. Ecco perché sistemi antivirus potrebbe rilevare l'utility come un pericolo per l'amministratore remoto.


    Per impostazione predefinita, un processo su una macchina remota viene eseguito come utente che esegue Psexec. Se necessario, il login e la password possono essere impostati in modo esplicito oppure è possibile utilizzare l'account SYSTEM.

    WMIC

    Per la guida Sistemi Windows attraverso diversi utilità grafiche spesso utilizzato è WMI (Windows Management Instrumentation), un'implementazione dello standard di gestione WBEM orientato agli oggetti. Come utilità con GUI wbemtest.exe può essere utilizzato per lavorare con WMI.


    Per lavorare con WMI dalla console creata wmic.exe. Ad esempio, per controllare aggiornamenti installati invece della costruzione raccapricciante dell'esempio precedente, puoi usare un semplice comando:


    wmic /node:"servername" qfe get hotfixid | trova "KB4012212"

    Puoi anche utilizzare l'elenco dei computer con il comando /node:"@computers.txt".


    Torna a Aiuto WMI puoi eseguire programmi - la sintassi è estremamente semplice:


    wmic /node:"servername" process call create "cmd /c somecommands"

    Sfortunatamente, a differenza di Psexec, non sarai in grado di ottenere l'output nella console: dovrai inviare i risultati del comando in un file.


    Per impostazione predefinita, un processo su una macchina remota viene eseguito come l'utente che ha avviato wmic. Se necessario, il nome utente e la password possono essere impostati in modo esplicito.

    Criteri di gruppo e script

    Se opzioni precedenti non ha richiesto un ambiente di dominio, in questo caso è necessario un dominio. Gli script sono supportati quando l'utente accede e si disconnette dal sistema, nonché quando viene acceso e spento. Perché tutti Amministratore Windows li ho incontrati, non descriverò in dettaglio come usarli - ti ricorderò solo dove cercarli.



    Script che vengono eseguiti all'avvio e all'arresto del sistema.



    Script che vengono eseguiti quando un utente accede e si disconnette.


    Gli script configurati nella sezione utente vengono eseguiti per conto dell'utente e nella sezione computer, sotto l'account SYSTEM.

    Attività pianificate

    Abbastanza modo interessante meritevole del diritto alla vita. Le attività pianificate possono essere create dalla riga di comando utilizzando l'utilità schtask.exe, eseguili, quindi eliminali. Puoi leggere di più sulla sintassi nella documentazione, ma analizzerò un esempio di utilizzo di attività pianificate in un ambiente di dominio. Supponiamo di dover eseguire un comando il più rapidamente possibile, indipendentemente dal fatto che il computer sia spento o meno. Per questo, vengono utilizzate le cosiddette preferenze. politiche di gruppo(Preferenze di criteri di gruppo).


    Dovresti cercare l'installazione delle attività pianificate nella configurazione del computer o dell'utente - "Impostazioni - Opzioni del pannello di controllo - Attività pianificate".



    Crea una nuova attività pianificata.


    Per eseguire un comando o uno script ASAP, sarà necessario creare un "Attività immediata (Windows 7 e versioni successive)". Se all'improvviso ci sono macchine che eseguono Windows XP nell'infrastruttura, allora l'attività successiva (Windows XP) andrà bene.


    Vale la pena creare diversi criteri con filtri WMI appropriati o creare due diverse attività pianificate nello stesso criterio con targeting, ad esempio utilizzando lo stesso filtro WMI. Ciò contribuirà a evitare conflitti in un ambiente eterogeneo con Windows vecchio e nuovo.


    Un esempio di filtro WMI per applicare il criterio solo su computer che eseguono Windows XP:


    SELECT * FROM Win32_OperatingSystem WHERE Versione LIKE "5.1%" AND ProductType = "1"

    Il resto della procedura per la creazione di un'attività pianificata è banale. L'unica cosa, non dimenticare di selezionare la casella "Applica una volta e non riapplicare" se l'attività non richiede un riavvio.



    Eseguire l'attività immediata solo una volta.


    Quando si utilizzano tali attività pianificate, il programma verrà avviato non appena il computer riceve un aggiornamento dei Criteri di gruppo. Questo è conveniente: non è necessario verificare la disponibilità dei computer nel caso di Psexec e wmic e costringere gli utenti a riavviare le macchine, come nel caso degli script dei criteri di gruppo. Se necessario, è possibile copiare il file di script localmente in "Impostazioni - Configurazione Windows- File.


    Le attività pianificate consentono di impostare in modo esplicito il nome utente per eseguire il programma, anche per SYSTEM.

    Attraverso il registro

    La modifica del registro sulle macchine degli utenti è un'opzione strana, solo in caso di emergenza. È possibile utilizzare rami Run o RunOnce. Maggiori informazioni su di loro nella documentazione. La stessa modifica del registro può essere eseguita tramite criteri di gruppo o dalla riga di comando, ad esempio con il seguente comando:


    reg add \\COMPUTER\HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce /v script /t Reg_SZ /d "script.cmd"

    A seconda del ramo del registro, il processo verrà eseguito con l'utente che ha effettuato l'accesso o con l'account SYSTEM.


    Esistono altri modi, come la modifica dei collegamenti nella cartella Esecuzione automatica o l'aggiunta a un collegamento a programma popolare && script.cmd, ma questi metodi sono già della serie "è possibile, ma non necessario".


    Ora passiamo ai nuovi strumenti.

    Nuovi modi o dove senza PowerShell

    PowerShell, fedele al suo nome, può connettersi a computer remoti utilizzando WMI, RPC e WS-Management (WSMan). Utilizzo ultimo metodo richiede preimpostazione.


    I cmdlet senza configurazione in genere hanno un parametro ComputerName ma nessun parametro Session. È possibile visualizzare un elenco di tali cmdlet con il comando:


    Ottieni il comando | dove ( $_.parameters.keys -contiene "ComputerName" -e $_.parameters.keys -notcontains "Sessione")

    Per configurare WSMan in caso generale basta eseguire il comando Enable-PSRemoting-Force. Avvierà il servizio di gestione remota WinRM e scriverà le eccezioni del firewall: in linea di principio, ciò può essere fatto per l'intero dominio utilizzando i criteri di gruppo. L'impostazione è descritta più dettagliatamente nella documentazione.


    Una volta che tutti i computer sono pronti ad accettare le richieste, possiamo connetterci utilizzando i cmdlet di PowerShell appropriati. Utilizzare il cmdlet per testare la connettività Test-WSMan.



    Controllo della connettività.


    Per adempiere un comando specifico o script, viene utilizzato il cmdlet Invoca-comando con la seguente sintassi:


    Invoke-Command -ComputerName COMPUTER -ScriptBlock ( COMMAND ) -credential USERNAME

    Dove COMPUTER è il nome del computer, COMMAND è il nome del comando e USERNAME è il nome utente, se necessario.



    Guardiamo il contenuto del disco da un computer remoto.


    Se abbiamo bisogno di ottenere una console completa, non per motivi di automazione, ma per gestire un computer specifico, possiamo utilizzare il cmdlet Enter-PSSession.



    Lavoriamo nella console di un computer remoto.


    Lascia che ti ricordi che con l'aiuto puoi limitare i cmdlet disponibili per tale sessione o dare accesso a quelli di cui hai bisogno senza diritti di amministratore.


    Ovviamente, a parte gli strumenti integrati e piccole utenze, ci sono molti programmi per gestire la struttura. Oltre alle soluzioni per adulti, puoi utilizzare strumenti di monitoraggio come Zabbix e persino la console di gestione antivirus Kaspersky per gestire configurazioni come Chef, Ansible e MS SCCM.


    Nel periodo delle strutture eterogenee, sarebbe bello avere la possibilità di unificazione Controlli di Windows e Linux. Questo può essere fatto anche con PowerShell, che di per sé è degno di un articolo a parte: vale la pena farlo o è già superfluo?


    Tag:

    • avvio remoto
    • wmi
    • powershell
    Aggiungere etichette

    Al giorno d'oggi anche per i cani ha inventato il telecomando .


    Tornando alla serie Admin Synopsis, vorrei parlare delle opzioni per l'avvio di programmi eseguibili su computer remoti. Questo articolo sarà interessante per coloro che non dispongono ancora di sistemi di gestione centralizzati, ma hanno già compreso la noiosità di bypassare manualmente workstation e server. O chi non è interessato a soluzioni chiavi in ​​mano per antisportività.


    Come motivo per cui è necessario un tale lancio di programmi, si può citare la recente isteria con Petya\Not-Petya, quando tutti si sono affrettati a controllare/disabilitare SMBv1 e scaricare gli aggiornamenti. Sì, e puoi anche fare un inventario o installare una patch urgente usando questo metodo.


    C'era una volta, ho trovato lavoro in un'organizzazione durante l'epidemia di Kido \ Conficker. Il modo più semplice per scoprire se tutto va bene nell'IS dell'azienda è stata una simpatica utility di Kaspersky chiamata Kido Killer, che ha verificato la presenza di un virus e lo ha eliminato. Eseguire manualmente il programma su un buon centinaio di macchine non è stato divertente, quindi ho dovuto familiarizzare con l'automazione.

    Se nei sistemi operativi * nix per l'avvio remoto, di norma viene utilizzato SSH, Windows ha modi per avviare programmi e script davvero come la sabbia nel deserto. Analizzerò le opzioni principali, sia note che esotiche. Non toccherò cose così ovvie come un server telnet, soprattutto perché Microsoft lo ha già rimosso dai moderni sistemi operativi.

    Modi vecchi, collaudati nel tempo

    PSexec

    Forse questa è la prima cosa che viene in mente quando si parla di lancio remoto di programmi. L'utilità di Mark Russinovich è stata utilizzata sin dai tempi di Windows NT ed è ancora utilizzata. Oltre alla funzione principale, puoi usarlo sia come Runas che per eseguire programmi nella sessione utente del terminal server. PSexec consente inoltre di impostare i core del processore su cui verrà eseguito il programma e la sua priorità nel sistema.


    Ad esempio, vediamo se è stato installato un aggiornamento che chiude la clamorosa vulnerabilità SMB nell'elenco dei computer:


    psexec @computers.txt /u USER /p PASS cmd.exe /v /c ""systeminfo | trova "KB4012212" || echo !nomecomputer! >> \\server\condivisione\log.txt"""

    Il file computers.txt contiene un elenco di computer. Puoi utilizzare \\* per l'esecuzione nell'intero dominio. Il file \\server\share\log.txt conterrà i nomi delle workstation o dei server senza l'aggiornamento. Se nel dominio sono presenti computer con *nix integrati o non è possibile accedere alla risorsa di rete amministrativa Amministratore$— il comando non verrà eseguito su questa macchina, ma l'elaborazione continuerà. Per evitare che lo script si blocchi a ogni tentativo di connessione, puoi impostare un timeout utilizzando il tasto -n.


    Se il computer è spento, non lo sapremo. Pertanto, è meglio verificare preventivamente la disponibilità delle macchine o raccogliere informazioni sull'esito positivo o negativo in un file.


    Per contro PSexec può essere attribuito al fatto che, per la sua comodità e popolarità, viene spesso utilizzato dagli autori di virus. Pertanto, i sistemi antivirus possono rilevare l'utilità come una minaccia di tipo amministratore remoto.


    Per impostazione predefinita, un processo su una macchina remota viene eseguito come utente che esegue Psexec. Se necessario, il login e la password possono essere impostati in modo esplicito oppure è possibile utilizzare l'account SYSTEM.

    WMIC

    Per gestire i sistemi Windows utilizzando varie utilità grafiche, viene spesso utilizzato WMI (Windows Management Instrumentation), un'implementazione dello standard di gestione WBEM orientato agli oggetti. È possibile utilizzare wbemtest.exe come utilità GUI per lavorare con WMI.


    Per lavorare con WMI dalla console creata wmic.exe. Ad esempio, per verificare la presenza di aggiornamenti installati, invece del raccapricciante costrutto dell'esempio precedente, puoi utilizzare un semplice comando:


    wmic /node:"servername" qfe get hotfixid | trova "KB4012212"

    Puoi anche utilizzare l'elenco dei computer con il comando /node:"@computers.txt".


    Puoi anche eseguire programmi utilizzando WMI: la sintassi è estremamente semplice:


    wmic /node:"servername" process call create "cmd /c somecommands"

    Sfortunatamente, a differenza di Psexec, non sarai in grado di ottenere l'output nella console: dovrai inviare i risultati del comando in un file.


    Per impostazione predefinita, un processo su una macchina remota viene eseguito come l'utente che ha avviato wmic. Se necessario, il nome utente e la password possono essere impostati in modo esplicito.

    Criteri di gruppo e script

    Se le opzioni precedenti non richiedevano un ambiente di dominio, in questo caso è necessario un dominio. Gli script sono supportati quando l'utente accede e si disconnette dal sistema, nonché quando viene acceso e spento. Poiché ogni amministratore di Windows li ha incontrati, non descriverò in dettaglio come usarli, ti ricorderò solo dove cercarli.



    Script che vengono eseguiti all'avvio e all'arresto del sistema.



    Script che vengono eseguiti quando un utente accede e si disconnette.


    Gli script configurati nella sezione utente vengono eseguiti per conto dell'utente e nella sezione computer, sotto l'account SYSTEM.

    Attività pianificate

    Un modo piuttosto interessante, che merita il diritto alla vita. Le attività pianificate possono essere create dalla riga di comando utilizzando l'utilità schtask.exe, eseguili, quindi eliminali. Puoi leggere di più sulla sintassi nella documentazione, ma analizzerò un esempio di utilizzo di attività pianificate in un ambiente di dominio. Supponiamo di dover eseguire un comando il più rapidamente possibile, indipendentemente dal fatto che il computer sia spento o meno. Per questo, vengono utilizzate le cosiddette preferenze dei criteri di gruppo.


    Dovresti cercare l'installazione delle attività pianificate nella configurazione del computer o dell'utente - "Impostazioni - Opzioni del pannello di controllo - Attività pianificate".



    Crea una nuova attività pianificata.


    Per eseguire un comando o uno script ASAP, sarà necessario creare un "Attività immediata (Windows 7 e versioni successive)". Se all'improvviso ci sono macchine che eseguono Windows XP nell'infrastruttura, allora l'attività successiva (Windows XP) andrà bene.


    Vale la pena creare diversi criteri con filtri WMI appropriati o creare due diverse attività pianificate nello stesso criterio con targeting, ad esempio utilizzando lo stesso filtro WMI. Ciò contribuirà a evitare conflitti in un ambiente eterogeneo con Windows vecchio e nuovo.


    Un esempio di filtro WMI per applicare il criterio solo su computer che eseguono Windows XP:


    SELECT * FROM Win32_OperatingSystem WHERE Versione LIKE "5.1%" AND ProductType = "1"

    Il resto della procedura per la creazione di un'attività pianificata è banale. L'unica cosa, non dimenticare di selezionare la casella "Applica una volta e non riapplicare" se l'attività non richiede un riavvio.



    Eseguire l'attività immediata solo una volta.


    Quando si utilizzano tali attività pianificate, il programma verrà avviato non appena il computer riceve un aggiornamento dei Criteri di gruppo. Questo è conveniente: non è necessario verificare la disponibilità dei computer nel caso di Psexec e wmic e costringere gli utenti a riavviare le macchine, come nel caso degli script dei criteri di gruppo. Se necessario, è possibile copiare il file di script in locale nella sezione "Impostazioni - Configurazione di Windows - File".


    Le attività pianificate consentono di impostare in modo esplicito il nome utente per eseguire il programma, anche per SYSTEM.

    Attraverso il registro

    La modifica del registro sulle macchine degli utenti è un'opzione strana, solo in caso di emergenza. È possibile utilizzare rami Run o RunOnce. Maggiori informazioni su di loro nella documentazione. La stessa modifica del registro può essere eseguita tramite criteri di gruppo o dalla riga di comando, ad esempio con il seguente comando:


    reg add \\COMPUTER\HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce /v script /t Reg_SZ /d "script.cmd"

    A seconda del ramo del registro, il processo verrà eseguito con l'utente che ha effettuato l'accesso o con l'account SYSTEM.


    Ci sono altri modi, come modificare i collegamenti nella cartella Avvio o aggiungere un collegamento a un programma popolare. && script.cmd, ma questi metodi sono già della serie "è possibile, ma non necessario".


    Ora passiamo ai nuovi strumenti.

    Nuovi modi o dove senza PowerShell

    PowerShell, fedele al suo nome, può connettersi a computer remoti utilizzando WMI, RPC e WS-Management (WSMan). L'utilizzo di quest'ultimo metodo richiede una configurazione preliminare.


    I cmdlet senza configurazione in genere hanno un parametro ComputerName ma nessun parametro Session. È possibile visualizzare un elenco di tali cmdlet con il comando:


    Ottieni il comando | dove ( $_.parameters.keys -contiene "ComputerName" -e $_.parameters.keys -notcontains "Sessione")

    Per configurare WSMan, in generale, è sufficiente eseguire il comando Enable-PSRemoting-Force. Avvierà il servizio di gestione remota WinRM e scriverà le eccezioni del firewall: in linea di principio, ciò può essere fatto per l'intero dominio utilizzando i criteri di gruppo. L'impostazione è descritta più dettagliatamente nella documentazione.


    Una volta che tutti i computer sono pronti ad accettare le richieste, possiamo connetterci utilizzando i cmdlet di PowerShell appropriati. Utilizzare il cmdlet per testare la connettività Test-WSMan.



    Controllo della connettività.


    Per eseguire un comando o uno script specifico, utilizzare il cmdlet Invoca-comando con la seguente sintassi:


    Invoke-Command -ComputerName COMPUTER -ScriptBlock ( COMMAND ) -credential USERNAME

    Dove COMPUTER è il nome del computer, COMMAND è il nome del comando e USERNAME è il nome utente, se necessario.



    Guardiamo il contenuto del disco da un computer remoto.


    Se abbiamo bisogno di ottenere una console completa, non per motivi di automazione, ma per gestire un computer specifico, possiamo utilizzare il cmdlet Enter-PSSession.



    Lavoriamo nella console di un computer remoto.


    Lascia che ti ricordi che con l'aiuto di JEA puoi limitare i cmdlet disponibili a tale sessione o dare accesso a quelli di cui hai bisogno senza diritti di amministratore.


    Naturalmente, oltre agli strumenti integrati e alle piccole utilità, esistono molti programmi per la gestione della struttura. Oltre alle soluzioni per adulti, puoi utilizzare strumenti di monitoraggio come Zabbix e persino la console di gestione antivirus Kaspersky per gestire configurazioni come Chef, Ansible e MS SCCM.


    In un periodo di strutture eterogenee, sarebbe bello poter gestire Windows e Linux unificati. Questo può essere fatto anche utilizzando PowerShell, che di per sé è degno di un articolo a parte: vale la pena farlo o è già superfluo?


    Tag: aggiungi tag

    Principali articoli correlati