Lanciare uno script remoto su un PC del dominio con PsExec

server-to-pc Volete lanciare uno script remoto su un PC del dominio?

Volete, ad esempio, attivare il DHCP su un client della rete?

Usate PSexec!

Ecco come fare:

Anzitutto devi scaricare PsExec (puoi seguire le istruzioni presenti in questo nostro articolo).
Crea poi un file vbs o bat da copiare sul PC remoto e lanciare. Io in questo caso uso un file AttivaDHCP.vbs che configura l’assegnazione automatica degli indirizzi IP con DHCP sul PC remoto. Queste le righe dello script AttivaDHCP.vbs:

strComputer = "."
Set objWMIService = GetObject(_
 "winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
 ("Select * from Win32_NetworkAdapterConfiguration " _
 & "where IPEnabled=TRUE")
 
For Each objNetAdapter In colNetAdapters
 errEnable = objNetAdapter.EnableDHCP()
 errEnable = objNetAdapter.SetDNSServerSearchOrder()
Next

Crea poi un file .bat ed inserisci nella sezione “Impostazione parametri fissi” il nome dell’utente amministratore, il percorso/nome del file dello script da copiare e lanciare sul PC remoto. Ecco lo script:

@echo off
rem Impostazione parametri fissi
rem ============================
SET UTENTEAMMINISTRATORE="MIODOMINIO\Administrator"
SET PERCORSOSCRIPT="\\SERVER-01\Scripts"
SET NOMESCRIPT="AttivaDHCP.vbs" 

echo Impostazione parametri variabili
echo ================================
SET /P NOMEPC=[Inserisci il nome del PC]: 
SET /P PASSWORDADMIN=[Inserisci la password dell'utente %UTENTEAMMINISTRATORE%]: 


if "%PASSWORDADMIN%"=="NUL" goto NOPARAMETERS
if "%NOMEPC%"=="NUL" goto NOPARAMETERS 
Set NOMEPC=NUL 
Set PASSWORDADMIN=NUL 
echo.
echo.
echo.

echo Copio il file dello script sul PC %NOMEPC%
echo ==========================================
set STRINGAPSEXECCOPIA=cmd /c copy %PERCORSOSCRIPT%\%NOMESCRIPT% %public%\downloads
psexec -u %UTENTEAMMINISTRATORE% -p %PASSWORDADMIN% \\%NOMEPC% %STRINGAPSEXECCOPIA%
echo.
echo.
echo.

echo Lancio lo script sul PC %NOMEPC%
echo ================================
set STRINGAPSEXECLANCIA=cscript %public%\downloads\%NOMESCRIPT%
psexec -u %UTENTEAMMINISTRATORE% -p %PASSWORDADMIN% \\%NOMEPC% %STRINGAPSEXECLANCIA%
echo.

pause 
Set PASSWORDADMIN=NUL
Set NOMEPC=NUL
goto FINE

:NOPARAMETERS
echo.
echo ERRORE: Inserire il nome del PC e la PASSWORD DI ADMIN

:FINE
echo.
echo =================
echo Fine elaborazione

Lo script dapprima copierà il file indicato nella variabile %NOMESCRIPT% nel percorso locale del PC %public%\downloads e poi lo lancerà. Per consentire i giusti permessi lo script chiederà la password dell’utente amministrativo indicato nella variabile %UTENTEAMMINISTRATORE%.

Otterrai:

Impostazione parametri variabili
================================
[Inserisci il nome del PC]: PC-001
[Inserisci la password dell'utente "MIODOMINIO\Admin"]: Mi@password.



Copio il file dello script sul PC PC-001
==========================================

PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com


        1 file copiati.
cmd exited on PC-001 with error code 0.



Lancio lo script sul PC PC-001
================================

PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com


Microsoft (R) Windows Script Host Versione 5.8
Copyright (C) Microsoft Corporation 1996-2001. Tutti i diritti riservati.

cscript exited on PC-001 with error code 0.

Premere un tasto per continuare . . .

=================
Fine elaborazione
Annunci

Script per aggiungere automaticamente una firma ad Outlook su Exchange 2010/2013

Find username

Vorreste creare una firma in Outlook automaticamente acquisendo le informazioni da Active directory?

Si può fare!


Normalmente in Active directory vengono salvate poche informazioni come nome e cognome, ma è possibile salvare molte più informazioni che possono essere utilizzate per creare automaticamente una firma completa senza che l’utente debba inserire alcuna informazione.
Grazie ad uno script vbs si potrà così creare un oggetto ADSystemInfo che raccoglie tutte le informazioni presenti in Active Directory e mostrarle nella firma. Nella figura qui di seguito potrete notare che è possibile estrarre qualsiasi attributo presente nell’utente da includere nella firma.

ADattributes

Nella seguente immagine troverete impostati i principali attributi utili nell’utilizzo della firma:

UserAD

Ecco un esempio già pronto ed il relativo codice:
Signature

On Error Resume Next 
Set objSysInfo = CreateObject("ADSystemInfo") 
strUser = objSysInfo.UserName 
Set objUser = GetObject("LDAP://" & strUser) 
strName = objUser.FullName 

strNome = objUser.Description 
strUfficio = objUser.physicalDeliveryOfficeName
strReparto = objUser.Department
strTitolo = objUser.Title
strSocieta = objUser.company 
strVia = objUser.streetAddress 
strLocalita = objUser.l
strTelefonoFisso = objUser.telephoneNumber 
strFax = objUser.FacsimileTelephoneNumber
strCellulare = objUser.Mobile
strProvincia = objUser.st
strEmail = objUser.mail

Set objWord = CreateObject("Word.Application") 
Set objDoc = objWord.Documents.Add() 
Set objSelection = objWord.Selection 
Set objEmailOptions = objWord.EmailOptions 
Set objSignatureObject = objEmailOptions.EmailSignature 
Set objSignatureEntries = objSignatureObject.EmailSignatureEntries 
Set objShape = objSelection.InLineShapes.AddPicture("\\NOMESERVER\CONDIVISIONE\logofirma.jpg") 

objSelection.TypeParagraph()
'objSelection.TypeText chr(11)
objSelection.Font.Size = "8" 
objSelection.Font.Name = "Verdana" 
objSelection.Font.Bold = true 
objSelection.TypeText strNome   
if not strTitolo="" then 
	objSelection.Font.Size = "6"  
	objSelection.Font.Bold = false 
	objSelection.Font.Italic = true 
	objSelection.TypeText Chr(11) & strTitolo 
end if
if not strUfficio="" then 
	objSelection.Font.Size = "6"  
	objSelection.Font.Bold = false 
	objSelection.Font.Italic = false 
	objSelection.TypeText Chr(11) & strUfficio 
end if
if not strReparto="" then 
	objSelection.Font.Size = "6"  
	objSelection.Font.Bold = false 
	objSelection.Font.Italic = false 
	objSelection.TypeText Chr(11) & strReparto 
end if 

objSelection.TypeParagraph() 


'objSelection.Style = "No Spacing" 
objSelection.Font.Italic = true 
objSelection.Font.Color = RGB(45,129,81)
objSelection.Font.Size = "8"   
objSelection.Font.Name = "Verdana" 
objSelection.Font.Bold = true 
objSelection.TypeText "NOMEAZIENDA" & Chr(11) 
objSelection.Font.Size = "6"  
objSelection.TypeText "INDIRIZZO" & Chr(11)
objSelection.TypeText "CAP LOCALITA (PROV)" & Chr(11)
objSelection.TypeText "Telefono: NUMERODITELEFONO" & Chr(11)
objSelection.TypeText "Fax: NUMERODIFAX"
if not strCellulare="" then objSelection.TypeText Chr(11) & "Mobile: " & strCellulare
objSelection.TypeText Chr(11) & "E-mail: " & strEmail 
objSelection.TypeParagraph() 

Set objSelection = objDoc.Range() 

objSignature = objSignatureEntries.Add("Firma con logo", objSelection) 
objSignatureObject.NewMessageSignature = "Firma con logo" 
objSignatureObject.ReplyMessageSignature = "Firma con logo" 
objDoc.Saved = True 
objWord.Quit