Supporto remoto per assistenza PowerShell. Lavora con sessioni di Powershell remote. Creazione di sessioni in PowerShell

Golovna / Funzionalità principale

Riepilogo: Conoscente z in lontananza keruvannyam da Windows PowerShell.

Weekend Scripter: abilita la crenatura remota di Windows.

Microsoft Scripting Guy, Ed Wilson su chiamata. Oggi pubblicherò un estratto dal mio nuovo libro Passo dopo passo di Windows PowerShell 3.0, che assomiglia a Microsoft Press. Allo stesso tempo, il libro è disponibile per la prenotazione anticipata.

WinRM - Rimuovere il kernel di Windows

In Windows Server 2012, WinRM è in esecuzione dietro le quinte per supportare la rimozione dei comandi remoti di Windows PowerShell. WinRM è l'implementazione di Microsoft dello standard del settore WS-Management Protocol. Ecco perché WinRM spera modo manuale l'accesso ai sistemi remoti a colpo d'occhio non poteva chiudere il firewall. Lo stesso meccanismo che vince nuovi comandi CIM. In questo modo è possibile connettersi a un computer Windows Server 2012 in esecuzione per eseguire comandi o aprire una console Windows PowerShell interattiva. Su Windows 8, invece, WinRM è bloccato. Non significa cosa succede dopo, cosa è necessario fare, quindi eseguire il cmdlet Abilita-PSRemoting. Quando si esegue questo cmdlet, vengono visualizzate le seguenti righe:

1. Avviare o riavviare il servizio WinRM.

2. Tipo di avvio del servizio WinRM viene installato automaticamente.

3. Viene creato un listener per ricevere connessioni per tutti gli indirizzi IP.

4. Disattivare il firewall per il traffico WS-Man.

5. Configurazione Microsoft.powershell caricata

6. Configurazione Microsoft.powershell.workflow caricata

7. Configurazione Microsoft.powershell32 caricata

Allungando questo processo, la funzione di energizzare il miglioramento della condizione della pelle. Se sai qual è la funzione e non vuoi apportare modifiche prima di essa, puoi eseguire questo comando con la chiave -forza e in questo modo la conferma non viene mostrata. La sintassi per questo comando è elencata di seguito.

Enable-PSRemoting –Forza

Ora mettiamo la funzione Enable-PSRemoting in modalità interattiva, includendo tutte le informazioni che vengono visualizzate.

PS C:\> Abilita-PSRemoting

Configurazione rapida WinRM

Premendo il pulsante "Set-WSManQuickConfig" per garantire una gestione efficiente di questo programma per l'aiuto del servizio Windows Remote Management (WinRM). Ciò comprende:

1. Avviare o riavviare (se già avviato) il servizio WinRM

2. Impostazione del tipo di avvio del servizio WinRM su Automatico

3. Creazione di un listener per accettare richieste su qualsiasi indirizzo IP

4. Abilitazione delle regole di eccezioni ordinate di Windows Firewall per il traffico WS-Management (solo per http).

Vuoi continuare?

WinRM può essere aggiornato per ricevere richieste.

Il tipo di servizio WinRM è stato modificato correttamente.

Servizio WinRM avviato.

WinRM può essere aggiornato per la gestione remota.

Creato un listener WinRM su HTTP://* per le richieste WS-Man a qualsiasi IP su questa macchina.

Eccezione WinRM Firewall abilitata.

microsoft.powershell SDDL:

[Y] Sì [A] Sì a tutti [N] No [L] No a tutti [S] Sospendi [?] Guida (l'impostazione predefinita è "Y"):y

Sei sicuro di voler eseguire questa azione?

Esecuzione dell'operazione "Set-PSSessionConfiguration" sulla destinazione "Nome:

microsoft.powershell.workflow SDDL:

O:NSG:BAD:P(A;;GA;;;BA)(A;;GA;;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;; ;WD). Questo sarà

consentire agli utenti selezionati di eseguire in remoto i comandi di Windows PowerShell su questo computer".

[Y] Sì [A] Sì a tutti [N] No [L] No a tutti [S] Sospendi [?] Guida (l'impostazione predefinita è "Y"):y

Sei sicuro di voler eseguire questa azione?

Esecuzione dell'operazione "Set-PSSessionConfiguration" sulla destinazione "Nome:

microsoft.powershell32 SDDL:

O:NSG:BAD:P(A;;GA;;;BA)(A;;GA;;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;; ;WD). Questo sarà

consentire agli utenti selezionati di eseguire in remoto i comandi di Windows PowerShell su questo computer".

[Y] Sì [A] Sì a tutti [N] No [L] No a tutti [S] Sospendi [?] Guida (l'impostazione predefinita è "Y"):y

Dopodiché, una volta trovata la configurazione, è possibile invertire la precedenza WinRM per un cmdlet aggiuntivo Test-WSMan. Se il sistema è impostato correttamente, verranno visualizzate informazioni simili a quella corrente.

PS C:\>Test-WSMan -NomeComputer w8c504

Versione prodotto: Sistema operativo: 0.0.0 SP: 0.0 Stack: 3.0

Questo cmdlet funziona anche su computer Windows PowerShell 2.0. Suggerimenti di seguito illustraє fino a un controller di dominio su Windows Server 2008 z installa Windows PowerShell 2.0, su cui WinRM è stato inchiodato.

PS C:\>Test-WSMan -NomeComputer dc1

wsmid: http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.xsd

ProtocolVersion: http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd

Fornitore del prodotto: Microsoft Corporation

Versione prodotto: Sistema operativo: 0.0.0 SP: 0.0 Stack: 2.0

Se WinRM non è impostato, la notifica sull'indulto verrà attivata. In tempo sistema operativo Windows 8, arriveremo presto.

PS C:\>Test-WSMan -NomeComputer w8c10

Test-WSMan:

xmlns:f="http://schemas.microsoft.com/wbem/wsman/1/wsmanfault" Code="2150859046"

Machine="w8c504.iammred.net">Non dimenticare WinRM. Verificare

che il nome del computer specificato sia valido, che il computer sia accessibile tramite il

rete e che sia abilitata e consentita un'eccezione firewall per il servizio WinRM

accedere da questo computer. Per impostazione predefinita, l'eccezione WinRM Firewall per public

I profili limitano l'accesso ai computer remoti all'interno della stessa sottorete locale.

Alla riga:1 carattere:1

Test-WSMan -NomeComputer w8c10

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo: InvalidOperation: (w8c10:String) , InvalidOperationException

FullyQualifiedErrorId: WsManError,Microsoft.WSMan.Management.TestWSManCommand

Tieni presente che l'abilitazione di Gestione remota con il cmdlet Enable-PSRemoting non disabilita il firewall di Gestione remota, quindi il tentativo di propagare un computer Windows 8 non va a buon fine.

PS C:\> ping w8c504

Ping w8c504.iammred.net con 32 byte di dati:

Tempo scaduto per la richiesta.

Tempo scaduto per la richiesta.

Tempo scaduto per la richiesta.

Tempo scaduto per la richiesta.

Statistiche ping per 192.168.0.56:

Pacchetti: inviati = 4, ricevuti = 0, persi = 4 (perdita del 100%).

Tutto funziona per Windows Server 2012.

PS C:\> ping w8s504

Ping w8s504.iammred.net con 32 byte di dati:

<1ms TTL=128

Risposta da 192.168.0.57: byte=32 tempo<1ms TTL=128

Risposta da 192.168.0.57: byte=32 tempo<1ms TTL=128

Risposta da 192.168.0.57: byte=32 tempo<1ms TTL=128

Statistiche ping per 192.168.0.57:

Pacchetti: inviati = 4, ricevuti = 4, persi = 0 (perdita dello 0%),

Tempi approssimativi di andata e ritorno nell'ora estiva:

Minimo = 0 ms, Massimo = 0 ms, Medio = 0 ms

Questo è tutto ciò che serve per migliorare WinRM.

Ed Wilson, addetto agli script di Microsoft

Originale:

Recentemente ho avuto la possibilità di perdere tre ore per ottenere l'accesso remoto tramite Powershell. Tale guida viene fornita come una potente alternativa ai Servizi Desktop remoto in un certo numero di casi (riavviare il servizio su un hosting VDS remoto, eseguire una copia di backup, dare un'occhiata al sistema di nuovo).

La possibilità di creare sessioni di Powershell remote è stata introdotta nella versione 2. Per la quale viene utilizzato il cmdlet Enter-PSSession/Invoke-Command. Prote, prima degli studenti vincitori, prepara il mezzo.

Cos'è Robimo sul server:

Krok 1: Aprire la console di Powershell e consentire una sessione remota utilizzando il cmdlet Enable-PSRemoting con la chiave Force.

Abilita-PSRemoting-Forza

Krok 2: Riconsiderare che il servizio WinRM è in esecuzione.

Avvia il servizio WinRM

Krok 3: Abbiamo cambiato le regole al brandmauer, in modo che la connessione in ingresso sia possibile.

Sul computer cliente tezh è necessario vikonati kіlka fai da te:

Krok 1: Consenti la connessione a nodi remoti. Per l'accesso a qualsiasi nodo, puoi velocizzare la struttura offensiva:

Set-Item wsman:\localhost\client\trustedhosts * -Force

Krok 2: Assicurati che il brandmauer non stia bloccando l'esterno della giornata.

Ora, per connetterti a un nodo remoto tramite Powershell, puoi farlo in questo modo:

Enter-PSSession 192.168.1.160 - Credenziale VMNAME\User

Il valore 192.168.1.160 e VMNAME\User deve essere sostituito con l'indirizzo dell'host remoto e il nome dell'host Windows sul server.

Ora l'accesso remoto tramite Powershell è possibile. Prote є un'altra sfumatura. Forse alcuni di voi sono profilati in Powershell. I profili sono script speciali che vengono lanciati all'inizio della console stessa. Qui, ad esempio, puoi designare tutti gli alias e le vicon necessari davanti a te.

Il problema sembra essere che i profili non si avviano per un'ora dopo la fine delle sessioni. Puoi cercare aiuto con diverse configurazioni di connessione. Per quale, è necessario registrare la configurazione su un server remoto. Puoi farlo barando sul comando Register-PSSessionConfiguration. Con qualsiasi configurazione di skin, puoi sperarlo. Per la configurazione della skin è possibile inserire un percorso allo script, che verrà verificato all'inizio della sessione.

Register-PSSessionConfiguration -name Config1 -startupScript c:\scripts\Startup.ps1

Dopodiché, quando si è connessi a un nodo remoto, quando il comando Enter-PSSession è diverso, specificare il nome della configurazione.

Enter-PSSession 192.168.1.160 -ConfigurationName Config1 - Credenziale VMNAME\User

Ora è possibile non utilizzare le risorse del server per creare una sessione di connessione tramite Servizi Desktop remoto e lontano dal server per l'aiuto di Powershell.

programmi di avvio remoto di PowerShell

Avvio di una sessione interattiva

Per avviare una sessione interattiva da un computer remoto, digitare il cmdlet Enter-PSSession. Ad esempio, per avviare una sessione interattiva dal computer remoto Server01, immettere:
entra-pssession Server01
Alla riga di comando, viene visualizzato il nome del computer, finché non si è connessi. Tutti i comandi immessi nella riga di comando vengono eseguiti su un computer remoto e i risultati vengono visualizzati sul computer locale.
Per terminare una sessione interattiva, immettere:
uscita-psession

Vikonannya in lontananza dalla squadra

Vinci il cmdlet Invoke-Command per viconiare un comando su uno o più computer remoti. Ad esempio, per eseguire il comando Get-UICulture sui computer remoti Server01 e Server02, immettere:

Invoke-command -computername Server01, Server02 (get-UICulture)
I dati di output verranno restituiti al tuo computer.
Per eseguire lo script su uno o più computer, includere il parametro FilePath del cmdlet Invoke-Command. Lo script è colpevole di essere notato o disponibile sul computer locale. I risultati verranno ruotati sul computer locale.
Ad esempio, il comando eseguirà lo script DiskCollect.ps1 sui computer remoti Server01 e Server02.
invoke-command -computername Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1

Installazione di connessione permanente
Per registrare un numero di comandi da dati elevati, creare una sessione in un computer remoto e quindi citare il cmdlet Invoke-Command per registrare i comandi dalla sessione creata. Per creare una sessione eliminata, tagga il cmdlet New-PSSession.
Ad esempio, il comando successivo consiste nel creare una sessione remota sul computer Server01 e un'altra sessione remota sul computer Server02. Vaughn porta gli oggetti alla sessione di modifica $s.
$s = new-pssession -nomecomputer Server01, Server02
Dopo che la sessione è stata stabilita, puoi visconare il comando. I punteggi delle sessioni sono costanti, puoi raccogliere dati in una squadra e conquistarli all'attacco.
Ad esempio, il comando successivo consiste nell'overridere il comando Get-Hotfix sulle sessioni per modificare $s e prendere i risultati della modifica $h. La modifica $h viene creata nella sessione skin $s, ma non funziona nella sessione locale.
invoke-command -session $s ($h = get-hotfix)
Ora puoi vincere la vittoria in squadre offensive, come offensive. I risultati vengono visualizzati sul computer locale.

Invoke-command -session $s ($h | dove ($_.installedby -ne "NTAUTHORITY\SYSTEM")

Tutto tratto da https://technet.microsoft.com/en-us/library/dd819505.aspx

Una delle attività più popolari per gli amministratori di sistema è eseguire qualsiasi comando su un computer remoto senza alzarsi dal proprio lavoro. Potrebbe essere necessario installare programmi o utilità, modificare l'installazione o meno, oppure altro. E, molto raramente, c'è più di un computer, spesso il comando deve essere eseguito su diverse workstation o server.

Oskіlki zavdannya tsya popolare, quei modi di vyrіshennya sono impersonali. A partire dai criteri di gruppo (per i quali è possibile interrompere gli script per l'accesso o l'ingresso automatico) e terminare con sistemi di gestione difficili, ad esempio System Center Essentials o System Center Configuration Manager. E in questo articolo, voglio esaminare i metodi disponibili alla vista riga di comando o file negli script e in questo modo non influisce sull'installazione in avanti di agenti e altri problemi. Vtіm, yakіs poperednі vimogi, zvichayno, є. Ad esempio, sei responsabile delle sostituzioni amministrative sul computer su cui desideri eseguire il comando (per il bene dello script con il proxy, ma per l'altra cosa).

Psexec.exe

Uno dei miei modi preferiti per eseguire questa attività è l'utilità della riga di comando PsExec.exe, scritta da Mark Russinovich, a cui è possibile accedere liberamente dal sito Web di Windows SysInternals. Possilannya su di esso può essere noto nell'articolo. Non ha bisogno di essere installato nel sistema, puoi semplicemente copiarlo in una delle cartelle, che può essere posizionata nel %path% modificato e fare clic sulla shell della riga di comando: Cmd o PowerShell.

L'hacking di PsExec è abbastanza semplice. Ad esempio, per viconate ipconfig /flushdns sul computer principale, basta eseguire il seguente comando:

psexec \\main ipconfig /flushdns

Il comando ipconfig verrà eseguito sul computer principale sotto le tue skin. Al termine del lavoro di ipconfig, tutti i file di testo verranno trasferiti sul computer e verrà restituito anche il codice di uscita del comando (codice di errore). Allo stesso tempo, la squadra ha avuto successo, il tempo di vittoria è stato 0.

Mi sono reso conto che PsExec non termina con quale possibilità. Facendo clic sull'utilità senza parametri, è possibile esaminare altre opzioni disponibili. Ho meno rispetto per le loro azioni.

Chiave -d sembra PsExec, che non sia necessario controllare il comando, ma è sufficiente eseguire її e dimenticarlo. In questo modo, non togliamo alcun dato dall'utilità della console, oppure potremmo non verificare il completamento del comando frontale per eseguirne altri. È più complicato, perché è necessario eseguire, ad esempio, il programma di installazione sui computer desktop.

Dopo aver bloccato PsExec, i comandi vengono disabilitati nella modalità collegata, in modo che il sistema, quando il comando è disabilitato, non verrà mostrato a giorni alterni o finestre di dialogo. Tuttavia, è possibile modificare questo comportamento per una chiave aggiuntiva -io. Quindi puoi specificare il numero di sessione, in quale finestra verrà visualizzata, oppure non puoi specificarlo, l'interfaccia verrà visualizzata nella sessione della console.

In questo ordine, per visualizzare una finestra con informazioni sulla versione del sistema operativo sul computer principale, eseguire PsExec in questo ordine:

psexec -i \\main winver.exe

Se vuoi digitare il comando in una riga sui computer delle decalcomanie, dovrai leggere i loro nomi da un elenco di file di testo.

psexec @c:\comps.txt systeminfo.exe

Ebbene, una delle maggiori caratteristiche di PsExec è la capacità di reindirizzare in modo interattivo l'input/output tra computer, che ci consente di eseguire, ad esempio, cmd.exe su un server remoto, e dargli comandi e acquisire i risultati sul computer locale .

Come funziona PsExec?

Tutto è ingegnosamente semplice. Le risorse del file malvagio PsExec.exe hanno un altro file malvagio: PSEXESVC, che è un servizio di Windows. Prima di chiudere il comando, PsExec decomprime la risorsa nella cartella amministrativa allegata sul computer remoto, file: \\Im'yaComputer\Admin$\system32\pexesvc.exe. Ad esempio, per l'aiuto dell'opzione -c, hanno indicato che è necessario copiare i file copiati su questo sistema, verranno copiati anche in questa cartella.

Una volta completata la preparazione di PsExec, installa e avvia il servizio, utilizzando le funzioni dell'API di Windows che devono essere curate dai servizi. Dopo l'avvio di PSEXESVC, vengono creati alcuni canali tra esso e PsExec per trasferire i dati (comandi di input, risultati, ecc.). Dopo aver completato il lavoro, PsExec avvia il servizio e lo vede dal computer di destinazione.

Strumentazione gestione Windows (WMI)

Il prossimo modo per implementare un'attività popolare, su ciò che voglio sapere: Strumentazione gestione Windows. WMI è disponibile su tutti i sistemi operativi Microsoft a partire da Windows 2000 e Windows 9x e può essere installato dal pacchetto ok. WMI è riservato per il blocco e non richiede ulteriori modifiche. Per lo yoga, ci sono sufficienti diritti amministrativi consentiti sul firewall per il protocollo DCOM. WMI ha un grande potenziale per la gestione dei sistemi, ma ne abbiamo bisogno solo uno alla volta.

Per avviare i processi, abbiamo bisogno del metodo Create della classe Win32_Process. Lo yoga Vikoristovuvati è facile da fare. PowerShell deve farlo in questo modo:

$Computer = "principale"
$Comando = "cmd.exe /c systeminfo.exe >
("\\$Computer\root\cimv2:Win32_Process").create($Comando)

Qui, come processo che si avvia, inserisco cmd.exe e anche tu, come argomento, passi il comando. Non è necessario, in quanto è necessario modificare la nitidezza del computer remoto, o utilizzare gli operatori cmd.exe, come " > » per reindirizzare la vista al file. Il metodo Create non controlla se il processo è stato completato e non controlla i risultati, quindi ci dice il suo ID - ProcessID.

Se si dispone di un computer in cui non è ancora installato PowerShell, è possibile chiamare il metodo WMI da uno script VBScript. Ad esempio, l'asse è:

Elenco n. 1 - Esecuzione del processo WMI (VBScript)

Computer="PC3"
Comando = "cmd.exe /c systeminfo.exe > \\server\condivisione\%nomecomputer%.txt"
Set objWMIService = GetObject("winmgmts:\\" & Computer & "\root\cimv2:Win32_Process")
Risultato = objWMIService.Create("calc.exe", Null, Null, intProcessID)

È inoltre più semplice utilizzare l'utilità della riga di comando wmic.exe per accedere all'interfaccia manuale del robot WMI ed entrare nel magazzino del sistema operativo, a partire da Windows XP. Per eseguire, ad esempio, una calcolatrice sul computer principale, basta premere il comando:

wmic /node: chiamata al processo principale create calc.exe

Come puoi immaginare, le capacità di WMI non si limitano alla sola esecuzione di processi. Se vuoi stare lontano dalla tecnologia, ti consiglio di familiarizzare con gli articoli di Kostyantyn Leontiev, relativi a WMI, in base a come puoi conoscere ad esempio gli articoli.

Script remoto WSH

Quindi, non c'è da stupirsi che Windows Script Host possa eseguire script anche su altri computer. È vero, questa funzione non ha guadagnato grande popolarità, ed era meglio per tutto attraverso coloro che avevano molti approcci preparatori e la natomistità non aveva molte opportunità. Ma lascia che ti parli lo stesso di questo metodo, in modo che possa valerne la pena.

Inoltre, per eseguire lo script su un altro computer con l'aiuto di WSH, è necessario eseguire le seguenti operazioni:

    I diritti dell'amministratore sul computer remoto. Aveva senso ed è necessario utilizzare tutti gli altri metodi per avviare gli elenchi nell'articolo.

    Abilita WSH Remote Scripting impostando la voce di registro Remoto uguale a "1" nella chiave di registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings

    Attraverso pardons, è descritto nell'articolo Microsoft Knowledge Base numero 311269, su sistemi con Windows XP, potrebbe essere necessario utilizzare il comando wscript –regserver

    Se un firewall è rotto sui computer, è necessario abilitare la connessione a DCOM. Inoltre, devi lavorare non solo su un computer ceramico, ma su quello su cui vuoi eseguire lo script.

    Per i sistemi Windows XP con Service Pack 2, potrebbe essere necessario modificare anche le impostazioni di sicurezza DCOM. Tse può zrobiti per chiedere aiuto politica di gruppo. L'installazione del nodo Configurazione computer \ Impostazioni di Windows \ Impostazioni di sicurezza \ Criteri locali \ Opzioni di sicurezza dovrebbe essere consentita nel seguente ordine:

    1. DCOM: Machine Access Restrictions nella sintassi SDDL (Security Descriptor Definition Language).
      Vedere i gruppi Accesso anonimo e Tutti consentono Consenti locale e Consenti accesso remoto

      DCOM: Restrizioni di avvio macchina nella sintassi SDDL (Security Descriptor Definition Language).
      Vedere il gruppo Amministratori consentito Consenti avvio locale, Consenti avvio remoto, Consenti attivazione locale, Consenti attivazione remota
      Raggruppa tutti – Consenti avvio locale, Consenti attivazione locale

Bene, dopo tutte queste procedure, puoi provare a eseguire il tuo script su un altro computer.

Un esempio di scenario, una sorta di tecnologia vittoriosa:

Listato n. 2 - Scripting remoto WSH (VBScript)

Imposta objController = CreateObject ("WshController")
Imposta objRemoteScript = objController.CreateScript("C:\test.vbs", "PC5")WScript.ConnectObject objRemoteScript, "remote_"
objRemoteScript.Execute
Fai mentre objRemoteScript.Status<> 1
WScript.Sleep 1000
ciclo continuo
MsgBox "Script completato"
Sub remote_Error
Dim objError
Imposta objError = objRemoteScript.Error
WScript.Echo "Errore - Riga: " & objError.Line & _
", Char: " & objError.Character & vbCrLf & _
"Descrizione: " & objError.Description
WScript.Esci -1
fine sub

Sull'altra riga, come parametro per la funzione CreateScript, viene indicato il percorso del file di script, che verrà eseguito su un computer remoto e alla luce di questo computer.

Il rapporto su questa tecnologia può essere letto nell'articolo VBScript avanzato per Microsoft Windows Amministratori - Capitolo 6: Scripting remoto(Div. Posilannya).

Agenda

Il pianificatore può essere controllato dalla riga di comando utilizzando due utilità: at.exe e schtasks.exe. I reati dell'utilità ti consentono di mostrare il nome del computer remoto dell'attività e, inoltre, di modificare la nostra attività. Ale, possiamo solo guardare schtasks.exe, i frammenti là fuori hanno più opportunità.

Sebbene i comandi su altri computer non siano le caratteristiche principali del pianificatore, consentono l'implementazione di alcuni scenari diversi. Ad esempio, per lo yoga, puoi aumentare l'installazione Software nel periodo di interruzione quotidiana. Altrimenti, poiché i tuoi koristuvach si incontrano a un'ora diversa, il lancio può essere ritardato dopo il periodo di canto dell'inattività del computer.

schtasks /create /s server6.td.local /tn install /tr \\main\data\install.cmd /sc once /st 13:00 /ru system

È importante capire nel nome di una sorta di registrazione oblіkovogo dell'appuntamento. Per questa applicazione, ho inserito il parametro /ru del valore di sistema, quindi per l'installazione del record del computer obliquo, sarà necessario l'accesso per la lettura cartella merezhu con la distribuzione del software.

Per prendere le decisioni migliori, mi è permesso pianificare se è un giorno, in un buon momento, e vedrò l'attività solo per la conferma del mio successo. Quindi puoi creare un semplice file batch che avvia il programma di installazione, ne verifica il completamento e verifica che il programma sia stato installato correttamente. Come se fosse così, hai visto l'attività dal pianificatore sul tuo computer. Un esempio di tale file:

Elenco n. 3 - Installazione di programmi da lavori lontani (Windows Batch)

msiexec /qn /pacchetto\server\condivisione\subinacl.msi
se esiste "c:\programmi\Windows Resource Kits\Tools\subinacl.exe" (
subinacl /tn Install_Subinacl /f

WinRM (gestione WS)

WinRM è un'implementazione dello standard DMTF (Distributed Management Task Force) di Microsoft, che consente ai sistemi di utilizzare altri servizi Web. Non approfondirò l'attaccamento alla tecnologia, descriverò solo brevemente ciò che è necessario per la mia ricerca.

Versione WinRM 1 e successive incluse nello stock di sistemi operativi, a partire da Windows Vista e Windows Server 2008. Per Windows XP e Windows Server 2003, è possibile installare WinRM come pacchetto okremy (pacchetto div.).

Per poter sistemare il computer per la connessione ad una nuova porta standard vicorist, consentendo la connessione ai record cloud amministrativi, è sufficiente utilizzare il comando:

configurazione rapida di winrm

Per vincere senza chiedere conferma, puoi aggiungere il tasto -quiet alla chiamata. Per ulteriori informazioni sulla messa a punto, puoi guardare la messa a punto di winrm:

configurazione guida di winrm

Come se un server Web fosse in esecuzione su un computer ceramico, non è possibile configurare WinRM, anche se la porta HTTP standard. Con perekhoplyuvatime meno connessione, riconosciuta appositamente per il nuovo.

Ovviamente, non è facile digitare il comando manualmente, sullo skin computer, qualunque cosa tu voglia controllare. Usі nebkhіdnі nalashtuvannya facilmente zrobiti per le politiche di gruppo di aiuto. Chi ha bisogno:

  1. Configurare il servizio WinRM (Gestione remota di Windows) avvio automatico
  2. Configurare la configurazione del computer \ Modelli amministrativi \ Componenti di Windows \ Gestione remota di Windows (WinRM) \ Servizio WinRM \ Consenti la configurazione automatica dell'elemento dei criteri di gruppo dei listener. Qui è necessario indicare l'intervallo dell'indirizzo IP dal quale sono consentite le connessioni.
  3. Ho indovinato, dovrai comunque consentire la connessione alla porta libera (per bloccare 80) firewall di Windows.

Indipendentemente dal fatto che la porta HTTP (80) sia sovrascritta o HTTPS (443), il traffico di trasmissione WinRM è crittografato (quindi ovviamente non si abilita questa opzione). Per l'autenticazione standard, il protocollo Kerberos viene ignorato.

Ale per parlare di allacciatura, piuttosto andiamo avanti senza via di mezzo alla cattiveria. Se l'utilità winrm ti consente di configurare il servizio WinRM, oltre ad abilitare WMI, ad esempio, abbiamo bisogno di winrs. Le lettere RS qui significano Remote Shell. WinRS funziona in modo molto simile alla tecnologia PsExec o WinRM. Il nome del computer viene impostato con il tasto -r e, dopo un nuovo comando successivo, è necessario vikonate. Asse del calcio della lancia:

winrs -r:Core ver.exe

Frammenti di winrs e così vince cmd.exe come una shell remota, nei comandi puoi facilmente andare alle modifiche lontane, oppure puoi usare altri comandi cmd.exe:

winrs -r:Core "dir c:\temp > c:\temp\list.txt"

Come PsExec, l'utilità winrs consente di aprire una sessione interattiva su un computer remoto:

winrs -r:main cmd.exe

Questa funzione è simile alla sessione telnet, ma winrs è decisamente migliore di telnet e naviga in PsExec, dal punto di vista della sicurezza. Indipendentemente dal fatto che la porta HTTP (80) o HTTPS (443) sia sovrascritta, il traffico di trasmissione WinRM è crittografato (quindi ovviamente non si abilita questa opzione). Per l'autenticazione standard, il protocollo Kerberos viene ignorato.

Controllo remoto di Windows PowerShell 2.0

Vuoi un amico Versione Windows PowerShell al momento della stesura dell'articolo è ancora in fase di beta test, su її possibilità nel campo dei comandi lontani è piuttosto diverso ora. Provalo tu stesso, puoi prendere la vecchia versione (div. possilannya) o presso il magazzino della versione beta di Windows 7 o Windows Server 2008 R2.

L'infrastruttura di PowerShell Remoting è basata su WinRM versione 2.0 e quindi tutti i progressi tecnologici sono in declino, come la crittografia dei dati trasmessi e la capacità di lavorare dietro le porte HTTP/HTTPS standard. Ma arricchiamoci con le possibilità di spostare Windows PowerShell e rendiamo ancora più possibile lavorare con gli oggetti. Al momento, il pacchetto WinRM2.0 è ancora in fase di beta testing ed è disponibile per il download solo per Windows Vista e Windows 2008. Sistemi Windows 7 e Windows Server 2008R2 verranno riavviati non appena PowerShell 2.0.

Aggiornamento: Fino alla pubblicazione dell'articolo sul sito, il definitivo Versioni di PowerShell 2.0 e WinRM 2.0 sono già disponibili per tutte le piattaforme di supporto. Prima dello stock di Windows Server 2008R2 e Windows 7, la puzza è già inclusa come componente di sistema invisibile e per Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 componenti richiesti Puoi guardare un pacchetto chiamato Windows Management Framework.

Prima di segnare tutti i progressi, PowerShell Remoting deve essere attivato sia sul computer rigido che su quello rigido. È facile farlo eseguendo il cmdlet ( Comando di Windows PowerShell) Enable-PSRemoting. Inoltre, se si aggiunge il tasto -Force, non verrà richiesta la successiva conferma. Questo cmdlet, se necessario, chiama winrs quickconfig e crea la colpa nel firewall di Windows, quindi non è necessario aggiungerne altri.

In alternativa, puoi facilmente digitare comandi su altri computer utilizzando il cmdlet Invoke-Command (o alias icm):

Invoke-Command -ComputerName Main -ScriptBlock (dump dell'interfaccia netsh > c:\ipconfig.txt)

Come puoi vedere, il comando può essere aggiunto all'elenco in un secondo momento e, per il parametro -ComputerName, specificare i nomi non solo di uno, ma di più computer. La sequenza successiva consente di inserire la versione del file Explorer.exe da tre computer.

$Comando = ((get-item c:\Windows\explorer.exe).VersionInfo.FileVersion)
Invoke-Command -ComputerName Main, Server7, Replica -ScriptBlock $Command

Come puoi vedere, è possibile trasferire una serie di comandi in un blocco, posizionare i risultati sui computer desktop al momento della modifica e quindi elaborarli su una workstation, utilizzando la capacità di Windows PowerShell di lavorare con gli oggetti.

Vtіm, la possibilità di PowerShell Remoting su tіlki pochinayutsya. Per assistenza con il cmdlet Enter-PSSession, puoi andare al file interattivo Sessione di Windows PowerShell su un computer remoto. È possibile uscire da tale sessione utilizzando il cmdlet Exit-PSSession o semplicemente uscire.

Il cmdlet New-PSSession crea sessioni su computer remoti, gli indicatori per yak_ possono essere modificati, quindi passandolo come argomento per Invoke-Command, puoi modificare il comando di seguito su quanti più computer possibile. Il calcio può essere visto nello screenshot, dove posso vedere la sequenza di comandi in una riga sui computer delle decalcomanie dall'elenco c:\computers.txt.

Proksuvannya

Questo metodo viene rivisitato alla luce degli elenchi attuali e funge da invito ad altri compiti, ma non per questo meno rilevanti. Se la delega del rinnovo non è possibile, altrimenti ci vengono date grandi opportunità, ti permettiamo di consentire al supremo coristuvachev di vincere il comando, come se avessi bisogno di privilegi di amministratore, e non concediamo la password dell'amministratore.

Il più delle volte, le persone cercano di risolvere questi problemi per utilità aggiuntive come cpau.exe (div. power) per creare un file da un record amministrativo crittografato con password che consente di eseguire un singolo programma. Il problema, tuttavia, è per coloro che desiderano che la password e la crittografia debbano decrittografarla prima di eseguire il programma di utilità. E puoi vincere l'utilità, che ripete l'algoritmo di decrittografia della password, e riconoscerlo, in modo da poterlo vincere per avviare altri programmi o togliere privilegi aggiuntivi. Pratico eccezionale coristuvachiv, Scho not vodіyut spetіalnymi znannannym, ma non è meno, per quanto possibile. Ancora una volta, chiarirò che questa non è un'utilità specifica, ma il problema di un tale approccio è scomparso.

Un'altra opzione consiste nell'utilizzare il parametro /savecred dell'utilità runas per completare l'attività. Ma qui ci sono due problemi. In primo luogo, come descritto sopra, la password viene salvata sul computer del koristuvach e, in seguito, potrebbe esserci la decrittazione, se si desidera avere i diritti dell'amministratore locale per questo runas. In un altro modo, runas salva i dati sull'aspetto, senza mostrarli con un comando specifico, quindi puoi eseguirlo con i diritti come quel comando, accedere a tutto ciò che vuoi darti, ma be-yaku insh.

Per evitare questi problemi, per consentire la digitazione di un comando specifico, è possibile battere la tecnica, in quanto viene chiamata "proxing".

Allenati in questo modo. Sul computer, lo script viene elaborato in modo permanente con privilegi elevati. Ad esempio, il nostro tipo di vino avrà lanci di un record pubblico, che potrebbe avere diritti di amministratore sul file server. Dopo il segnale del koristuvach, noi vikonuvatime uno, nominerò una squadra in anticipo. Per ogni culo - chiudi tutti i file, aprili attraverso la linea.

Per organizzare il sistema, lo posizioniamo sul server, ad esempio, nella cartella c:\scripts\ file di comando Server.cmd e Action.cmd .

Listato n. 4 - Server.cmd (Windows Batch)

set trigger=c:\commandShare\trigger.txt
set action=c:\scripts\action.cmd
imposta log=c:\scripts\log.txt
:inizio
se esiste %trigger% avvia %action% & echo %time% %date%>>%log% & del %trigger%
sleep.exe 5
vai a iniziare

Elenco n. 5 - Action.cmd (Windows Batch)

for /f "skip=4 tokens=1" %%a y ('file di rete') do file di rete %%a /chiudi
Uscita

Server.cmd controlla il segno del file nello spazio sing e, dopo averlo omesso, esegui il file con i comandi - Action.cmd. Ho capito che i miei papà non sono colpevoli del giusto accesso. L'avvio automatico di Server.cmd all'avvio del computer può essere organizzato creando una seconda attività nello scheduler:

schtasks /create /ru dominio\amministratore /rp /sc onstart /tn ProxyScript /tr c:\scripts\server.cmd

Dopo aver specificato il parametro /ru record fisico, se lo script deve essere modificato (il nostro utente non dispone dei diritti di amministratore sul server), dopo il parametro /rp non viene specificata la password: verrai acceso quando l'attività viene creata. L'opzione /sc consente di specificare quando avviare lo script, nel nostro caso il nome del computer. Bene, /tn e /tr ti consentono di specificare il nome dell'attività e il file da copiare.

Ora, per fare in modo che gli script inviino istantaneamente un segnale, creeremo la cartella c:\commandShare e la renderemo disponibile secondo necessità. L'accesso al record in questa cartella è responsabilità della sola madre dei coristuvachi, per eseguire il comando.

Non appena è sufficiente, collocherai il coristuvachev nel file di stile di lavoro Run.cmd.

Listato n. 6 - Run.cmd (Windows Batch)

echo test > \\server\commandShare\trigger.txt

Quando lo fai, il file \\server\commandShare\trigger.txt verrà creato nel nome del coristuvach. Lo script Server.cmd, dopo averlo contrassegnato, esegue il file Action.cmd sulla viconnary con i propri privilegi, aggiunge una voce al file c:\scripts\log.txt sull'ora corrente, quindi elimina il trigger.txt così che il comando non si risvegli fino al segnale offensivo del coristuvach.

Lo script Server.cmd utilizza l'utilità Sleep.exe, che consente allo script di sospendere le attività per un'ora. Non devi entrare nel magazzino del sistema operativo, ma puoi prenderlo dagli strumenti del Resource Kit e copiarlo su qualsiasi computer.

  • tutorial

C'è un minimo di teoria, la parte più importante è pratica. Descrivi come configurare WinRM, come modificare un profilo adattatore in twill, viene fornito lo script per aggiungerlo a TrustedHosts con filtraggio, spiega le esigenze degli host attendibili e le connessioni vengono esaminate superficialmente in lontananza in modo che sia possibile sistemare e vedere la macchina da remoto.

Il modo più semplice per nalashtuvati in lontananza la gestione dei vikonati Abilita-PSRemoting in obolontsi vivere con i diritti di amministratore. Quando diventa così:

  • avviare il servizio WinRM (come ha avviato il riavvio)
  • Il servizio WinRM va al campo - avvio automatico all'avvio
  • verrà creato intercettando WinRM per HTTP traffico portuale 5985 per tutti gli indirizzi IP locali
  • Verrà creata una regola firewall per il listener WinRM. Rispetto, questa voce sarà completata al più presto, se non altro dall'unione di carte, il tipo di fusione è "pubblico", perché L'apertura di una porta su una carta del genere non va bene. Se si dispone di tale perdono durante la configurazione, modificare il profilo di rete con un cmdlet Set-NetConnectionProfile e quindi eseguire nuovamente Enable-PSRemoting. Se hai bisogno di una carta collegata con il profilo "Tesoreria pubblica", esegui Enable-PSRemoting con il parametro -Salta il controllo del profilo di rete quale avrà le regole del firewall create meno di linee locali.
Se necessario, è possibile collegarsi alla macchina lontana da quella macchina, con la quale è richiesto il controllo. Zrobleno tse z metoyu security per cambiare il rizik nella sessione malvagia del keruvannya remoto, o il DNS che si sostanzia per sostituire la macchina remota e dimenticare gli script sulle macchine, come se non ti fosse permesso.

Per verificare nuovamente dove puoi connetterti vikoristovuemo:
get-item wsman:\localhost\Client\TrustedHosts
per permetterti di connetterti a tutti
set-item wsman:localhost\client\trustedhosts -value *
Se si abilita l'accesso per tutti * WinRM specificati si collegherà a TUTTE le macchine senza ricablare. Ricorda quello che dici a te stesso per il potenziale male della dimensione locale. In breve, specifica gli indirizzi host a cui devi connetterti, quindi WinRM consentirà tutti gli altri indirizzi o nomi. Se una macchina è gestita, dovrebbe trovarsi in un dominio che considera attendibili tutte le macchine in quel dominio. Se non è nel dominio, o in un altro dominio, è necessario inserire l'indirizzo in TrustedHosts altrimenti la macchina si collegherà ad esso. Aggiungi a te stesso in auto fino a quando non siamo collegati.

Vengono dati i comandi di aiuto, ne ho ricostruiti alcuni dallo script
############################################################### # ############################################ # aggiungi NewHost all'elenco TrustedHost con il filtro, quindi questa riga può già essere # # .\Add-TrustedHost.ps1 192.168.2.1 ############################################## ## ############################################################################################ ### # ## param ($NewHost = "192.168.2.89") Write-Host "aggiungere host: $NewHost" $prev = (get-item WSMan:\localhost\Client\TrustedHosts).value if (($prev .Contains( $ NewHost)) -eq $false) ( if ($prev -eq "") ( set-item WSMan:\localhost\Client\TrustedHosts -Value "(!LANG:(!LANG:$NewHost)" } else { set-item WSMan:\localhost\Client\TrustedHosts -Value "$prec, $NuovoHost" } } Write-Host "" Write-Host "Now TrustedHosts contains:" (get-item WSMan:\localhost\Client\TrustedHosts).value !} !}
in revіryає chi є un tale record, come se non aggiungesse nulla all'elenco. La chiamata può essere effettuata dalla riga di comando inserendo l'indirizzo o il nome.

Є ryznitsya kazuvati im'ya chi indirizzo. Se ci sono solo indirizzi in TrustedHosts, aggiungi la sessione a Im'I not see e navpak, quindi dico che sono allegato all'indirizzo che non vedo. Chiama tse.

perché è diverso

Enable-PSRemoting ruba più fai da te, abbassa "winrm quickconfig". Il cmdlet Set-WSManQuickConfig funziona allo stesso modo di "winrm quickconfig". Enable-PSRemoting esegue Set-WSManQuickConfig se il sistema è stato configurato

Connessione remota
1. Sessioni 1-to-1
gridato dalla squadra
Enter-PSSession -ComputerName Test
Togli l'involucro su una macchina remota. Puoi connetterti a te stesso inserendo localhost. I prestiti alternativi vengono assegnati con il parametro -Credenziali, chiuso dal cmdlet uscita-PSSession

Scambia in questo modo:

  • non è possibile lavorare un altro taglio di capelli - meno di 1 sessione, a metà sessione non è possibile connettersi ulteriormente
  • non puoi vincere comandi, yakі mayut interfaccia grafica. Se vuoi che la shell sia sospesa, premi Ctrl + C per appenderla
  • non puoi eseguire comandi che possono eseguire i tuoi comandi, ad esempio nslookup, netsh
  • è possibile eseguire script, poiché la politica consente di eseguirli su una macchina remota
  • non riesco a partecipare alla sessione interattiva, vai come "accesso alla rete" nibi allegato al disco unito Lo script di accesso non si avvia e non è possibile prendere la cartella home sul computer remoto (l'argomento non è mappare la cartella home e gli script di accesso)
  • Non puoi interagire con il corrispondente sulla macchina remota per trovare gli stessi vini lì. Non affrettarti a mostrarti alla fine, o fare amicizia con te.
Questo metodo è il migliore per operazioni semplici, zaishov, dopo aver scambiato il server e aver effettuato la connessione. Se devi eliminare i cambiamenti nella folla, hai bisogno di una tripla operazione (molti anni o più giorni), hai bisogno di più opportunità di amministrazione, quindi devi vincere la tecnica chiedendo.
Commento.
gli oggetti passati attraverso la rete si formano e cessano di essere vivi. Il fetore si vede dai metodi, le autorità vengono abbandonate. Vityagti ob'єkt sulla tua macchina, pochakluvat e spingi indietro non vanno. Se è necessario scrivere di più, lo aggiungo bene.

2. Sessioni da 1 a molti
Invoca-comando
indichiamo ciò che possiamo vedere nel modo seguente:
$sb = (comandi per la macchina remota divisa con una virgola)
trasferiti su macchine remote Test1 e Test2
Invoke-Command -ComputerName Test1, Test2 -ScriptBlock $sb
alla volta puoi lanciare su 32 auto. Come credito alternativo, vince il parametro -Credential

Per trasferire nuovamente lo script in sostituzione del parametro -ScriptBlock, scrivere -FilePath, nella macchina remota NON è necessario avere accesso al file, ci sarà la predisposizione dei pezzi di ricambio, i trasferimenti via HTTP e la chiusura da quel lato.

Tieni presente che ci sarà un nuovo falco pescatore da quel lato, quindi il tuo script non sovrascrive il valore dalla tua console e gli script modificati possono apparire su quella barca vuota. A questo, invia istruzioni e script già pronti con parametri.

per una riscrittura completa di Invoke-Command, è necessario modificare le righe in blocchi di script. Ad esempio, hai dei comandi per trovarsi in un elenco del genere, devi generare una riga, convertirla in ScriptBlock e modificarla in computer remoto:
$sb = ::Crea($SomeString)
kuda78
All'articolo manca un arco momento importante- Trasferimento dei parametri dallo script alla macchina remota.

$deployRemote = (
param(
$targetEnvName,
$targetNome utente)
$Globale:ErrorActionPreference = "Interrompi"
#…
}

Invoke-Command -Session $session -ScriptBlock $deployRemote -ArgumentList($targetEnvName, $targetUsername)


Quindi vere omissioni. Zrobiv svidomo, per non molestare uno sguardo con parametri e descrizioni. Dyakuyu. Il parametro -ArgumentList funziona sia con i blocchi di script che con gli script

3. Sessioni
Se da quel lato viene creata una copia del vishik da appendere permanentemente in memoria, e gli vengono inviati comandi. Di conseguenza, è possibile riconnettersi ad esso, eseguire il cenity per un vikonannya, tagliare con script diversi o coristuvaches diversi. Ad esempio, hai una serie di script che funzionano un compito alla volta, skin da loro in base al quale puoi connetterti fino a una sessione remota, lavorare i risultati del lavoro dei comandi avanti, madri di uno zavantage moduli , le modifiche principali, la tappa successiva, fino alla fine del .

La sessione viene creata dal cmdlet New-PSSession, il risultato può essere salvato con la modifica
$DC01 = Nuova-PSSession -ComputerName DC01 $Controllers = Nuova-PSSession DC01, DC02, DC03
puoi utilizzare gli stessi parametri di connessione di Invoke-Command

Yak vikoristovuvati:
Yakscho 1 a 1
Enter-PSSession -Sessione $DC01
Yakscho 1-a-molti
Invoke-Command -Sessions $Controllers -ScriptBlock (get-eventlog -logname security -newest 50)
puoi vedere se riesci a vedere la sessione di aiuto Get-PSSession, chiudi Remove-PSSession
chiudere tutte le sessioni
Get-PSSession | Rimuovi PSSession
puoi connetterti alla sessione con l'aiuto di Connect-PSSession, connetterti tramite Disconnect-PSSession

Invoke-Command può creare immediatamente una sessione disconnessa, eseguire comandi per svegliarsi e connettersi, in seguito è possibile riconnettersi e recuperare i risultati del lavoro. Combatti con il parametro -Disconnected. Recupero dei risultati tramite il cmdlet Recieve-PSSession.

Le sessioni possono essere riccamente personalizzate, è possibile creare sessioni con una serie di comandi, moduli, ecc. Chiamati endpoint personalizzati

© 2022 androidas.ru - Tutto su Android