Affichage des articles dont le libellé est script. Afficher tous les articles
Affichage des articles dont le libellé est script. Afficher tous les articles

mardi 10 décembre 2019

Powershell : activer les scripts






Si vous avez besoin d'activer des scripts powershell sur votre ordinateur et que celui-ci vous insulte voici de quoi le calmer :

Set-ExecutionPolicy Unrestricted
s'il est méchant:
à refaire en administrateur

sinon ajouter la clef suivante à la base de registre


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell]
"ExecutionPolicy"="Unrestricted"



lundi 28 octobre 2019

Bat: Envoyer un message (le nouveau netsend)





Envoyer un message à un collègue

Si vous vous souvenez de Netsend qui était désactivé depuis windows 7.
Sachez qu'il existe un autre outil qui va encore plus loin.

Déjà sachez qui est connecté sur une machine distante:


query session /server:nom_pc

Puis envoyez le message comme suit:

msg nom_utilisateur /server:nom_pc /V /w "Hello !"

/v = verbose
/w = information sur la réponse (clic sur ok ou ferme la fenêtre)

Bat: Query Session + LogOff




Vous voulez savoir qui est connecté sur un pc et le Kicker si besoin :
En invite de commande ou Powershell
Query session /server:nom_du_pc
récupérer le numéro de l'ID

logoff /server:nom_du_pc

mercredi 23 octobre 2019

Bat: restart Explorer (Kill explorer and start it again)

Copy/paste into txt file
which will be rename into .bat extension

taskkill /f /im explorer.exe
EXPLORER

lundi 30 septembre 2019

Lister les mots de passe Wifi



Voici un petit script pour lister les mots de passe Wifi sous windows :

$list=@()
$listSSID=(netsh wlan show profile * key=clear) | find "Nom du SSID"
$listSSID=$listSSID.Substring(30).replace('"','')

foreach ($SSID in $listSSID) {
    #write-host $SSID
    $pass=(netsh wlan show profile $SSID key=clear | find 'Contenu de la cl')

    if ($pass -match 'Contenu de la cl')
        {
        $pass=$pass.Substring(35)
        #write-host $pass
        #write-host "2--------------"
        $list+=[PSCustomObject]@{SSID = $SSID;PWD=$pass}
       
    }
}
$list | out-gridview -PassThru

jeudi 4 octobre 2018

Licences Windows : slmgr



Il est parfois nécessaire d'activer la licence Windows.

Il existe un petit script VBS qui peut faire plein de chose : SLMGR

pour l'utiliser il faut être en ADMIN et utiliser les arguments adéquates.
ex:

Etat de la licence

slmgr /dli
slmgr /dlv
 
Supression de clef
slmgr /cpky
 
Desinstall la product Key
slmgr.vbs /upk 
 
Injecter une Clef
slmgr /ipk #####-#####-#####-#####-#####
 
Activer en ligne
slmgr.vbs /ato  
 
Sur un serveur XXX KMS
slmgr.vbs -skms xxx.yyy.zzz.local
 
Activer hors ligne
Obtenir l'identifiant de confirmation 
slmgr.vbs /dti   
Téléphoner
puis utiliser : 
slmgr.vbs /atp ACTIVATIONID 


Etendre la période d'essai
slmgr.vbs /rearm
 
Date d'expiration de la licence:
slmgr.vbs /xpr 

à Distance:
slmgr.vbs /option
slmgr.vbs computername username password /option 
 

mardi 28 août 2018

Dos, Avec un PING -a recupérer le nom de machine







for /f "tokens=1-6 delims= " %a in ('ping -a 192.168.1.15^|find "ping"') do echo %f



Sur la commande PING -a sur l'IP 192.168.1.15
trouver la ligne comprenant "PING
puis rechercher les 6 premiers éléments qui sont séparé par des espaces
et afficher le 6ème élément (soit F la 6ème lettre)

lundi 11 juin 2018

Attaquer un PC à distance, quel service lancer



Souvent, je n'arrive pas à exécuter un script sur une machine distante, voici les manipulations que je dois faire :

Lancer les services suivants:
Net start <service>

Nom_service:Nom francais/Nom Anglais
RpcSs : Appel de procédure distante /Remote Procedure Call (RPC)
SessionEnv : Configuration des service bureau à distance /Remote Desktop Configuration
WinRM : gestion à distance de windows / Windows Remote Management
RpcLocator : localisateur d'appels de procédure distante /Remote Procedure Call (RPC) Locator
seclogon : ouverture de session secondaire /Secondary Login
RemoteRegistry : registre à distance / Remote Registry

DcomLaunch :Lanceur de processus serveur DCOM / Server Process Launcher Service DCOM

Si le service n'est pas démarré:
sc \\<nom_du_pc> start <service> start=auto


Voir l'état d'un service en PowerShell
en local
get-service <service>

a distance:(avec droits du domaine)
get-service <service> -ComputerName <nom_du_pc>


Activer le enable-psremoting -force (Pour WinRM)
Ports utilisés: HTTP : 5985 / HTTPS : 5986

Enter-PSSession -ComputerName CLI01.it-connect.fr

Enable-PSRemoting

Exit-PSSession

Source:
https://technet.microsoft.com/fr-FR/library/dd819498.aspx
https://www.it-connect.fr/powershell-remoting-avec-winrm/
GPO: https://www.dtonias.com/enable-powershell-remoting-group-policy/


En VBS et WMI, démarrer un service:
$S = Get-WmiObject -Computer $Server -Class win32_service -filter "name='$ServiceName'"
$S.StopService()
$S.StartService()
ou
Get-WmiObject -Namespace "root\cimv2" -Class Win32_Process -Impersonation 3 -ComputerName

En PowerShell, démarrer un service:
Invoke-WMIMethod -Name StopService -Computer $Server -Class win32_service -filter "name='$ServiceName'" 

Invoke-WMIMethod -Name StartService -Computer $Server -Class win32_service -filter "name='$ServiceName'" 
ou (changer le type de démarrage en auto (de WINRM)) sur le PC $computer.text
Set-Service -name WinRM -ComputerName $computer.Text -startuptype "auto"
(démarrer le service WINRM)
(Get-Service -ComputerName $computer.Text -Name "WinRM").Start()

WINRM:
winrm quickconfig
get-wmiobject CIM_Memory -computername

Configuration Parfeu:
netsh firewall set service RemoteAdmin enable.

netsh advfirewall firewall set rule group="Windows Management Instrumentation (WMI)" new enable=yes


DCOM:
Regedit:
HKLM\Software\Microsoft\OLE, Value: EnableDCOM

1. Démarrer -> Exécuter -> dcomcnfg
2. Développez Services de composants -> Ordinateur et sélectionnez propriétés dans le menu contextuel
3. Dans l'onglet Propriétés par défaut sélectionnez "Activer les services Internet COM sur cet ordinateur"
4. Redémarrez votre ordinateur.

jeudi 17 mai 2018

VBS: rendre vos utilisateurs autonomes (Vider le gestionnaire d'identification ou Coffre Fort)


Comme vu sur l'article suivant : Migration de poste: mots de passe enregistrés il est possible d'exporter ses identifiants d'un poste à l'autre grâce aux outils Microsoft Credential Manager ou en ligne de commande avec CMDKEY.

Il est donc possible d'automatiser quelques tâches en voici un exemple :

Dim shell,command
command = "powershell.exe -nologo -command (cmdkey /list | ForEach-Object{if($_ -like '*Cible*'){cmdkey /del:($_ -replace ' ','' -replace 'Cible:','')}})"

Set shell = CreateObject("WScript.Shell")
shell.Run command,0
msgbox("Nettoyage du Gestionnaire d'identification effectué")

La solution est certes alambiqué, un VBS qui lance un PowerShell qui lance un exécutable, mais elle a le mérite d'exister, et d'être transparent pour l'utilisateur 

jeudi 26 avril 2018

Migration

Si vous devez sauvegarder le profil d'un utilisateur (W7-10), voici un petit script:

mkdir %~dp0%username%\

net use > %~dp0%username%\lecteurs_reseau.txt
%~dp0%Listeimprimante.vbs

move "%~dp0imprimante.txt" "%~dp0%username%\"
move "%~dp0imprimanteDefault.txt" "%~dp0%username%\"

rem echo %~dp0

cls
@echo Office va se fermer . sauvegarder vos document avant d aller plus loin
pause
taskkill /IM outlook.exe
taskkill /IM excel.exe
taskkill /IM word.exe



rem xcopy /S /Q /H /Y "%userprofile%\OneDrive\*" "%~dp0%username%\OneDrive\"
rem xcopy /S /Q /H /Y "%userprofile%\OneDrive Entreprise – Modifications *\*" "%~dp0%username%\OneDrive Entreprise – Modifications non synchronisées\"

xcopy /S /Q /H /Y "%userprofile%\Contacts\*" "%~dp0%username%\Contacts\"
xcopy /S /Q /H /Y "%userprofile%\Favorites\*" "%~dp0%username%\Favorites\"

xcopy /S /Q /H /Y "%userprofile%\AppData\Roaming\Microsoft\Sticky Notes\*" "%~dp0%username%\AppData\Roaming\Microsoft\Sticky Notes\"
xcopy /S /Q /H /Y "%userprofile%\AppData\Roaming\Microsoft\Excel\*" "%~dp0%username%\AppData\Roaming\Microsoft\Excel\"
xcopy /S /Q /H /Y "%userprofile%\AppData\Roaming\Microsoft\Proof\*" "%~dp0%username%\AppData\Roaming\Microsoft\Proof\"
xcopy /S /Q /H /Y "%userprofile%\AppData\Roaming\Microsoft\Signatures\*" "%~dp0%username%\AppData\Roaming\Microsoft\Signatures\"
xcopy /S /Q /H /Y "%userprofile%\AppData\Roaming\Microsoft\Templates\*" "%~dp0%username%\AppData\Roaming\Microsoft\Templates\"
xcopy /S /Q /H /Y "%userprofile%\AppData\Roaming\Microsoft\UProof\*" "%~dp0%username%\AppData\Roaming\Microsoft\UProof\"

xcopy /S /Q /H /Y "%userprofile%\AppData\Roaming\Mozilla\*" "%~dp0%username%\AppData\Roaming\Mozilla\"
xcopy /S /Q /H /Y "%userprofile%\AppData\Local\Google\*" "%~dp0%username%\AppData\Local\Google\"
xcopy /S /Q /H /Y "%userprofile%\AppData\Roaming\Apple\*" "%~dp0%username%\AppData\Roaming\Apple\"

xcopy /S /Q /H /Y "%userprofile%\Desktop\*" "%~dp0%username%\Desktop\"
xcopy /S /Q /H /Y "%userprofile%\Documents\*" "%~dp0%username%\Documents\"
xcopy /S /Q /H /Y "%userprofile%\Pictures\*" "%~dp0%username%\Pictures\"
xcopy /S /Q /H /Y "%userprofile%\Music\*" "%~dp0%username%\Music\"
xcopy /S /Q /H /Y "%userprofile%\downloads\*" "%~dp0%username%\downloads\"
xcopy /S /Q /H /Y "%userprofile%\Videos\*" "%~dp0%username%\Videos\"
xcopy /S /Q /H /Y "%userprofile%\AppData\Local\Microsoft\Outlook\*.pst" "%~dp0%username%\AppData\Local\Microsoft\Outlook\*.pst"



pause
cls
pause
echo pensez aux lecteurs reseau
echo pensez aux imprimantes
echo pensez signatures par défaut
Et le script ListeImprimante à mettre au meme :
Const ForWriting = 2
Dim fso, f  
strComputer = "."

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colInstalledPrinters = objWMIService.ExecQuery ("Select * from Win32_Printer")

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(".\imprimante.txt", ForWriting,true)
set f2 = fso.OpenTextFile(".\imprimanteDefault.txt", ForWriting,true)

For Each objPrinter in colInstalledPrinters

if (objPrinter.Name <> "Fax") and (objPrinter.Name <> "Microsoft Office Live Meeting 2007 Document Writer") and (objPrinter.Name <> "Microsoft XPS Document Writer")  Then
        f.write(objPrinter.Name & vbnewline)
    end if

if (objPrinter.Default = true) then
    f2.write(objPrinter.Name & vbnewline)
end if


Next

Migration : VBS : PS :Signature Outlook



Si vous souhaitez enregistrer le nom des signatures utilisées pour les nouveaux emails et réponse dans Outlook, voici un petit script VBS (et PowerShell) pour afficher ces informations.

VBS:

Const ForReading = 1, ForWriting = 2
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")


Set objWord = CreateObject("Word.Application")
Set objEmailOptions = objWord.EmailOptions
Set objSignatureObject = objEmailOptions.EmailSignature

msgbox (objSignatureObject.NewMessageSignature)
Set f = fso.OpenTextFile("c:\temp\mail_signature_new.txt", ForWriting,true)
f.write(objSignatureObject.NewMessageSignature)

msgbox (objSignatureObject.ReplyMessageSignature)
Set f = fso.OpenTextFile("c:\temp\mail_signature_rep.txt", ForWriting,true)
f.write(objSignatureObject.ReplyMessageSignature)
'objSignatureObject.ReplyMessageSignature = "Signature"

PowerShell: 

#Set the signature as default for new emails
$MSWord = New-Object -ComObject word.application
$EmailOptions = $MSWord.EmailOptions
$EmailSignature = $EmailOptions.EmailSignature

$wshell = New-Object -ComObject Wscript.Shell
$wshell.Popup($EmailSignature.NewMessageSignature,0,"Done",0x1)
$wshell.Popup($EmailSignature.ReplyMessageSignature,0,"Done",0x1)

$file = new-item "c:\temp\email_new.txt" –type file -force
add-content $file $EmailSignature.NewMessageSignature

$file = new-item "c:\temp\email_rep.txt" –type file -force
add-content $file $EmailSignature.ReplyMessageSignature

#$EmailSignature.NewMessageSignature = "agadou" #insert the signature name
#$EmailSignature.ReplyMessageSignature ="agadou"

$MSWord.Quit()

vendredi 20 avril 2018

webcam et script

Decouverte d'outils:

L'outil CommandCam.exe est bien pratique si vous souhaitez prendre une photo en ligne de commande.

De base, il prend directement une image, mais plusieurs arguments peuvent être associés :
-spécifier la source si plusieurs webcam (/devname, /devserial, /devnum)
-la redondances toutes les x secondes (/delay)
-l'emplacement de l'image enregistrée (/filename)
 -mode silencieux (/quiet)

L'outil est très léger (64ko) et bien pratique.

On pourra l'associer à d'autres outils tel que PSexec pour l’exécuter à distance.
d'autre arguments peuvent être associés:
-le nom de la machine distante (\\computername)
-Copier l'executable sur la machine distante (-c c:\windows\system32\notepad.exe) (sans guillemets)
-ecraser l'executable si copie (-c -f)
pour plus de facilité, vous pouvez utiliser l'outil FEPSTOOLS

on met tout ça en VBS par exemple:

PCName = InputBox("Entrer le NOM de PC?","?","minint-6BKDFR5")
'connaitre l'emplacement du script
strPath = Wscript.ScriptFullName
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(strPath)
strFolder = objFSO.GetParentFolderName(objFile)
'Test ping machine
PING = objShell.Run("Ping.exe " & PCName, 0,TRUE)
'Msgbox "Resultat du PING " & PING
            if PING = 1 Then
                msgbox "Pc injoignable"
                WScript.Quit
            end if

Set objShell = CreateObject("WScript.Shell")
set objScriptExec = objShell.Exec("cmd.exe /k "&strFolder&"\PsExec.exe \\"&PCName&" -c -f "&strFolder&"\commandcam.exe /quiet /filename c:\capture.bmp")
'recuperer la capture:
set objScriptExec = objShell.Exec("cmd.exe /k move /Y \\"&PCName&"\c$\capture.bmp "&strFolder&"\"&PCName&"-%DATE:~0,2%%DATE:~3,2%%DATE:~6,2%-%time:~0,2%%time:~3,2%.bmp")

On pourra y associer des recherches via AD, une élévation de droits (via un autre script VBS ou avec PSEXEC)

mardi 21 novembre 2017

VBS: rendre vos utilisateurs autonomes (Mapper le lecteur personnel s'il saute)

Petit script en VBS pour remapper le lecteur personnel (ici U:) selon les informations fournies par l'AD

'On Error Resume Next
Dim objSysInfo, objUser, status
Set objSysInfo = CreateObject("ADSystemInfo")

' Currently logged in User
Set objUser = GetObject("LDAP://" & objSysInfo.UserName)



msgbox(objUser.displayName & vbCrLf & "----------------------" & vbCrLf & objUser.homeDirectory)

set objShell = CreateObject( "WScript.Shell" )
set objScriptExec = objShell.Exec("net use u: /delete")
set objScriptExec = objShell.Exec("net use u: " & objUser.homeDirectory & " /p:o")


Wscript.Quit

vendredi 15 septembre 2017

VBS (+PSEXEC) : Ajout utilisateur du domaine au groupe administrateur local d'une machine distante

Bonjour,



Ci-joint un petit script (associé à PSEXEC pour ajouter des droits administrateurs à un utilisateur sur une machine distante)

1°) Récuperer PSEXEC sur le PC du technicien (c:\windows\system32\psexec)
2°) 

On Error Resume Next
Const Quote = """"
dim wshShell

domain = InputBox ("Nom du domaine","Nom du domaine","Le nom de votre domaine")
login = InputBox("Nom utilisateur?")
pc= InputBox("Nom du PC")

login = domain & "\" & login
set wshShell=CreateObject("Wscript.Shell")
commandtorun=("%comspec% /k psexec \\" & pc & " net localgroup Administrateurs /add " & Quote & login & Quote)
wshShell.run (commandtorun)

Wscript.Quit

Et voilà