tag:blogger.com,1999:blog-37805775820117284162024-03-06T05:41:21.472+01:00Lo ScriptomaneLo "Scriptomane" è il nomignolo con il quale molti colleghi mi chiamano quando mi viene posto un problema ed io, anzichè dire che non si può fare o consigliare un qualche programmino bell'e'pronto, rispondo: si può fare con uno script.
Alcuni altri dicono che uso windows come se fosse linux, io rispondo che le macchine si riparano con strumenti analoghi, siano esse ferrari oppure porsche.Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.comBlogger47125tag:blogger.com,1999:blog-3780577582011728416.post-25232601840706789262020-01-28T20:33:00.000+01:002020-01-28T20:33:01.179+01:00TAIL in BATCH - windows come linux<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="font-size: x-large;"><b>B</b></span>uongiorno a tutti e benvenuti ad
un altro post del mio blog : "lo Scriptomane".<o:p></o:p></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
Oggi parleremo di come ottenere,
con uno script, un funzionamento molto simile a quello del comando tail di
Linux/Unix anche sui nostri amati host windows.<o:p></o:p></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<o:p><br /></o:p></div>
<h2 style="margin-bottom: .0001pt; margin: 0cm;">
<o:p>Lo script: TAIL.BAT </o:p></h2>
<div>
<o:p>ed eccolo qui, in tutta la sua semplice bellezza:</o:p></div>
<div>
<br /></div>
<div>
<style type="text/css">
span {
font-family: 'Courier New';
font-size: 10pt;
color: #000000;
}
.sc0 {
}
.sc1 {
color: #008000;
}
.sc2 {
font-weight: bold;
color: #0000FF;
}
.sc4 {
color: #FF00FF;
}
.sc5 {
color: #0080FF;
}
.sc6 {
font-weight: bold;
color: #FF8000;
background: #FCFFF0;
}
.sc7 {
font-weight: bold;
color: #FF0000;
}
</style>
<br />
<div style="background: #FFFFFF; float: left; line-height: 1; white-space: pre;">
<span class="sc4">@</span><span class="sc2">ECHO</span><span class="sc0"> OFF
</span><span class="sc1">REM tail.bat
REM Implementazione di un comando TAIL in windows batch di Diego Castelli.
</span><span class="sc0">
</span><span class="sc2">Setlocal</span><span class="sc0"> EnableDelayedExpansion
</span><span class="sc2">for</span><span class="sc0"> /f "usebackq delims</span><span class="sc7">=</span><span class="sc0">: tokens</span><span class="sc7">=</span><span class="sc0">1,2,</span><span class="sc7">*</span><span class="sc0">" </span><span class="sc6">%%f</span><span class="sc2"> in</span><span class="sc0"> (`find /c /v "" </span><span class="sc6">%1</span><span class="sc0"> ^</span><span class="sc7">|</span><span class="sc5">FINDSTR</span><span class="sc0"> /R /C:":[\s]</span><span class="sc7">*</span><span class="sc0">[0-9]</span><span class="sc7">*</span><span class="sc0">"`)</span><span class="sc2"> do</span><span class="sc5"> (</span><span class="sc0">
</span><span class="sc1">REM echo f: %%f g: %%g h: %%h
</span><span class="sc0"> </span><span class="sc2">set</span><span class="sc0"> /A fileLines</span><span class="sc7">=</span><span class="sc6">%%g</span><span class="sc0">
</span><span class="sc2">set</span><span class="sc0"> /A Lns</span><span class="sc7">=</span><span class="sc6">%2</span><span class="sc0">
</span><span class="sc2">set</span><span class="sc0"> /A Lns2Skip</span><span class="sc7">=</span><span class="sc6">!fileLines!</span><span class="sc0">-</span><span class="sc6">!Lns!</span><span class="sc0">
</span><span class="sc5">more</span><span class="sc0"> "</span><span class="sc6">%1</span><span class="sc0">" </span><span class="sc7">+</span><span class="sc6">!Lns2Skip!</span><span class="sc0">
</span><span class="sc1">REM for /f "usebackq skip=%Lns2Skip% delims=" %%d in (%1) do echo %%d
</span><span class="sc5">)</span><br />
<span class="sc5"><br /></span>
<span class="sc5"><br /></span>
<span class="sc5"></span><br />
<a name='more'></a><span class="sc5"><br /></span>
<span class="sc5"><br /></span>
<span class="sc5"><br /></span></div>
</div>
<div>
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br />
<br />
<br />
<a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a>
<br />
<br />
Devo dire che, prima di esplorare a fondo le caratteristiche
del comando FOR di batch, tail era uno strumento che sognavo di usare nei miei
scripts… mi faceva una grande invidia quando lo utilizzavo dalla riga di
comando o in uno script bash.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Piano piano, vedendo le opzioni di FOR, si è insinuata l’idea
di poterlo realizzare anche in batch in modo semplice, per espandere le capacità
degli script e raggiungere nuovi livelli di automazione… <o:p></o:p></div>
<div class="MsoNormal">
Ecco quindi la spiegazione, step by step di come si comporta
lo script:<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<h3>
prepariamo l’ambiente</h3>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
Salterò “i convenevoli” e non parlerò di echo off e setLocal
EnableDelayedExpansion. Se volete approfondire vi invito a leggere un altro
post del mio blog: <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<h3>
il mitico FOR</h3>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
Qui sotto copio e incollo le spiegazioni dell’help del
comando for, per dettagliare cosa fa ogni cosa:<o:p></o:p></div>
<div class="MsoNormal">
con l’opzione /f "usebackq delims=: tokens=1,2,*"
andiamo a dire a FOR:<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>/f :</b> usa le opzioni estese che verranno specificate tra
virgolette<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Usebackq:</b> Specifica che sono attive le nuove semantiche, in
cui le stringhe con apici inversi vengono eseguite come comandi e le stringhe
con virgolette singole sono comandi con stringhe letterali in cui è possibile
utilizzare le virgolette doppie per specificare i nomi di file in un gruppo di
file.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Delims=: </b>:<b> </b>Specifica un insieme di delimitatori. Tale insieme
sostituisce i delimitatori predefiniti (spazi e tabulazioni). </div>
<div class="MsoNormal">
In pratica, qui stiamo dicendo che le “colonne” del nostro output sono separate
dai due punti e che FOR deve incrementare di una lettera dell’alfabeto (partendo
da quella specificata poi nella variabile) ogni volta che passa ad analizzare
la “colonna successiva”<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Tokens=1,2,* </b>: Specifica i token da passare, per ogni riga,
al corpo del blocco FOR a ogni iterazione. Determina l'allocazione di nomi di
variabile aggiuntivi. L'espressione m-n indica l'intervallo dei token compresi
tra la posizione m e la posizione n. Se l'ultimo carattere della stringa
specificata dopo tokens= è un asterisco, verrà allocata una variabile
aggiuntiva in cui sarà inserito il testo rimanente sulla riga dopo l'ultimo
token analizzato. <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In sostanza, stiamo dicendo che ci interessano la prima “colonna”,
la seconda e poi tutto quello che viene dopo, a prescindere da quanti delimitatori
si incontrano da lì in poi. <o:p></o:p></div>
<div class="MsoNormal">
Ad ogni token viene associata una variabile che parte dalla lettera
dell’alfabeto scelta poi (<b><span style="background: #fcfff0; color: #ff8000; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">%%f</span></b> ), quindi le
variabili che ci aspettiamo popolate durante il ciclo saranno %%f, %%g, %%h<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
in <b>(`find /c /v "" %1 ^|FINDSTR /R
/C:":[\s]*[0-9]*"`) do (</b> : utilizziamo l’output del comando tra le
back-quotes (a proposito: ALT+96 sul tastierino numerico, per farle) e lo
analizziamo riga per riga.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Ora, il comando principale è find /c /v "" %1,
ossia, trova il carattere NESSUNO e conta le righe che NON lo contengono (/v)
all’interno del file %1, che è il primo parametro che passiamo al nostro batch<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Il comando secondario (a cui passiamo l’output del principale
mediante una PIPE, qui correttamente preceduta dal carattere di escape), lo uso
per filtrare l’output, perché il comando principale ha un output di 3 righe: la
prima e l’ultima sono vuote, quindi se non facciamo niente ci troveremo le
variabili VUOTE, perché l’ultima esecuzione del ciclo sarebbe su una riga vuota
e quindi…<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="color: blue;">Ma per far capire meglio, eseguiamo in una shell i comandi
ad uno ad uno</span></b>. <o:p></o:p></div>
<div class="MsoNormal">
Ci alleneremo con il file c:\windows\system32\DISMLog.log
che è il log dello strumento di gestione e manutenzione immagini di windows (è
un log di sistema, in sostanza, senza che mi dilunghi…).<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKu9CH1t8HO6avnGKVhJB4T6w67yiOnDhjfI1Yqen5LkH86NGdBHCuen1CAB4Y8js63jPO7DywetMT2MAYXhfe1ElcAC87F-YMzSSQftI4hV9W-Wi8e0mMThrFkJvI2v0vO5KgjfUAhugQ/s1600/FIGURA1.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="172" data-original-width="430" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKu9CH1t8HO6avnGKVhJB4T6w67yiOnDhjfI1Yqen5LkH86NGdBHCuen1CAB4Y8js63jPO7DywetMT2MAYXhfe1ElcAC87F-YMzSSQftI4hV9W-Wi8e0mMThrFkJvI2v0vO5KgjfUAhugQ/s1600/FIGURA1.JPG" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-family: "times new roman"; font-size: small; text-align: start;">FIGURA1</span></td></tr>
</tbody></table>
<br />
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Come vedete, il comando conta quante righe NON contengono un
carattere NULLO (quindi conta tutte le righe del file), ma vedete che l’output
è di 3 righe: la prima e l’ultima sono vuote. A noi interessa solo quella
centrale<o:p></o:p></div>
<div class="MsoNormal">
Ecco quindi che ci viene in aiuto la PIPE ad un altro FIND:
FINDSTR, che è in grado di analizzare l’output anche con le regular expressions.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe_fAxBLyZ1LCOYHj8Z_E7Rvaevv28Nfg1E3VXUBikZUWTqpO0OHZ1sQfcbOvNA_rg_RU_6X9yFF49vCnSo8DRWi_puqPVzAO809s1FIRcLPaYp4fw4sDLl4pSoNaZiW5YnbM1GbWxmTH6/s1600/FIGURA2.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="270" data-original-width="712" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe_fAxBLyZ1LCOYHj8Z_E7Rvaevv28Nfg1E3VXUBikZUWTqpO0OHZ1sQfcbOvNA_rg_RU_6X9yFF49vCnSo8DRWi_puqPVzAO809s1FIRcLPaYp4fw4sDLl4pSoNaZiW5YnbM1GbWxmTH6/s1600/FIGURA2.JPG" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: small; text-align: start;">FIGURA2</span></td></tr>
</tbody></table>
<br />
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Come vedete in figura 2 l’output è arrivato pulito… possiamo
quindi analizzarlo con il FOR senza temere errori.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<h3>
Settiamo le variabili</h3>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
Con le righe<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span class="sc2" style="white-space: pre;"> set</span><span class="sc0" style="white-space: pre;"> /A fileLines</span><span class="sc7" style="white-space: pre;">=</span><span class="sc6" style="white-space: pre;">%%g</span><span class="sc0" style="white-space: pre;">
</span><span class="sc2" style="white-space: pre;">set</span><span class="sc0" style="white-space: pre;"> /A Lns</span><span class="sc7" style="white-space: pre;">=</span><span class="sc6" style="white-space: pre;">%2</span><span class="sc0" style="white-space: pre;">
</span><span class="sc2" style="white-space: pre;">set</span><span class="sc0" style="white-space: pre;"> /A Lns2Skip</span><span class="sc7" style="white-space: pre;">=</span><span class="sc6" style="white-space: pre;">!fileLines!</span><span class="sc0" style="white-space: pre;">-</span><span class="sc6" style="white-space: pre;">!Lns!</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Definiamo le variabili : <o:p></o:p></div>
<div class="MsoNormal">
fileLines = numero totale di righe<o:p></o:p></div>
<div class="MsoNormal">
Lns = numero di righe da mostrare dalla fine del file<o:p></o:p></div>
<div class="MsoNormal">
Lns2Skip = quindi, il numero da saltare (totale – righe da
mostrare)<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<h3>
More</h3>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
A questo punto usiamo il comando more, passando il nome del
file da analizzare e il totale delle righe da saltare, preceduto dal + (è un
parametro speciale del comando more).<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
More mostra il file in modalità particolare: ossia mostra
una schermata alla volta, lasciando all’utente la possibilità di proseguire
(con la barra spaziatrice o con l’invio, sperimentate! – tasto q per “quit”)<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPJDzXYYoNeV_q3lor1jaHe0qXPmLXNVW5PHqcj7Ay3R7_oTX-R6qnk7REueVmyEDM4t-uQmBc1NRrQcfZo9P7vRshwt3E0RurHLcrrf0b5GCmNHHndX93vSoK45dC5abhi_kZjV10MK4N/s1600/FIGURA3.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="516" data-original-width="982" height="336" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPJDzXYYoNeV_q3lor1jaHe0qXPmLXNVW5PHqcj7Ay3R7_oTX-R6qnk7REueVmyEDM4t-uQmBc1NRrQcfZo9P7vRshwt3E0RurHLcrrf0b5GCmNHHndX93vSoK45dC5abhi_kZjV10MK4N/s640/FIGURA3.JPG" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: small; text-align: start;">FIGURA3</span></td></tr>
</tbody></table>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
… ed eccoci arrivati alla fine dell’articolo. Per usare il
nostro simpatico tail, ci basterà richiamarlo dall’interno dei nostri script o
direttamente dal prompt e passare, come primo parametro il nome file e come secondo
il numero di righe da mostrare dalla fine.<o:p></o:p></div>
<div class="MsoNormal">
Tutto qui.<o:p></o:p></div>
<div class="MsoNormal">
Qui sotto in figura 4 vi mostro le ultime 12 righe del file di log.</div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyZ-72yyUtK7wmK1rD3ICezTQfTP-qbsDwcMOXxiX-F6PQpvNruxlArvxnhVj_-ZEBXo9i5sf3WnFesWNFFspqCbkQjd0x4qWOnhgG7OPNAK_h2wutj0p5qqyhJD8CTK5rCjCOLi5cOiVV/s1600/FIGURA4.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="379" data-original-width="607" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyZ-72yyUtK7wmK1rD3ICezTQfTP-qbsDwcMOXxiX-F6PQpvNruxlArvxnhVj_-ZEBXo9i5sf3WnFesWNFFspqCbkQjd0x4qWOnhgG7OPNAK_h2wutj0p5qqyhJD8CTK5rCjCOLi5cOiVV/s640/FIGURA4.JPG" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: small; text-align: start;">FIGURA4</span></td></tr>
</tbody></table>
<div class="MsoNormal">
<br /></div>
<br />
<br />
Che dire... spero di aver stuzzicato la vostra fantasia e...<br />
<br />
<b><span style="font-size: large;">Happy Scripting a tutti!</span></b>Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-48939595232637260122019-08-27T16:59:00.000+02:002020-01-28T16:41:35.325+01:00Trovare files e cartelle che hanno uno specifico permesso ACL NTFS (o non hanno)<span style="background-color: white;"><span style="color: #222222; font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><span style="font-size: 50px;">B</span>uongiorno a tutti e benvenuti ad un altro post.</span></span><br />
<span style="background-color: white; color: #222222; font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br /></span>
<span style="background-color: white; color: #222222; font-family: "arial" , "helvetica" , sans-serif; font-size: small;">In questo articolo vi voglio spiegare com'è possibile, da un elenco di cartelle e o di file, recuperare quelli che hanno oppure non hanno uno specifico permesso per uno specifico utente.</span><br />
<div dir="auto" style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: small;">
<br /></div>
<div dir="auto" style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: small;">
In sostanza, oggi mi sono trovato a dover testare alcune cartelle, per una anomalia sulle ACLs, tuttavia non sapevo QUALI avevano impostato il mio utente nelle ACLs direttamente e quali invece avevano il gruppo.</div>
<div dir="auto" style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: small;">
<br /></div>
<div dir="auto" style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: small;">
Ecco come ho fatto:</div>
<div dir="auto" style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: small;">
<br />
<ul>
<li>Ho "fatto DIR" con powershell (Get-ChildItem) e ho quindi ciclato su tutte le cartelle, ottenendo le loro ACLs.</li>
<li>Per ogni cartella ho semplicemente verificato che il mio nome utente non fosse presente nelle ACLs, testando la proprietà AccessToString (con un ulteriore LOOP sulla proprietà Access, che è una collection di oggetti*, invece, avrei potuto controllare puntualmente anche il tipo di permesso etc...)</li>
<li>Quindi, se il permesso non c'era, ho stampato a schermo il nome della cartella.</li>
</ul>
</div>
<div dir="auto" style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: small;">
<br />
* collection di oggetti AuthorizationRuleCollection</div>
<div dir="auto" style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: small;">
<br />
<br />
<br />
<br /></div>
<div dir="auto" style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif;">
<b><span style="font-size: large;">Bando alle ciance: ecco lo script:</span></b></div>
<div dir="auto" style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: small;">
<br /></div>
<div dir="auto" style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: small;">
<br /></div>
<div dir="auto" style="background-color: white;">
<div dir="auto" style="color: #222222; font-family: arial, helvetica, sans-serif; font-size: small;">
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$FolderPath</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">Get-ChildItem</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Directory </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Path </span><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"E:\Personali"</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$FolderPath</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">|</span></b><b><span style="color: blue; font-family: "courier new"; font-size: 10.0pt;">foreach</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">{</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$acls</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">Get-Acl</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$_</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">FullName<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><b><span style="color: blue; font-family: "courier new"; font-size: 10.0pt;">if</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$acls</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">AccessToString </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">notlike </span><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"*DOMINIO\nomeutente*"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">){</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">write-host</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"la cartella "</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$_</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">FullName</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">" non ha <span style="font-size: 13.3333px;">nomeutente</span> nelle ACLs"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">}</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">}</span></b><span style="font-family: "times new roman" , serif; font-size: 12.0pt;"><o:p></o:p></span></div>
</div>
<div dir="auto" style="color: #222222; font-family: arial, helvetica, sans-serif; font-size: small;">
<br />
come vedete in questo caso ho filtrato SOLO le Directory (con il parametro -Directory)</div>
<div dir="auto" style="color: #222222; font-family: arial, helvetica, sans-serif;">
<div style="font-size: small;">
<br />
<br /></div>
<div style="font-size: small;">
<br /></div>
<a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a>
<br />
<br />
<b><span style="font-size: large;">La versione + "approfondita"</span></b></div>
<div dir="auto" style="color: #222222; font-family: arial, helvetica, sans-serif; font-size: small;">
<br /></div>
<div dir="auto">
<div style="color: #222222; font-family: arial, helvetica, sans-serif; font-size: small;">
Con quest'altra versione, è possibile verificare per tutti i files e le cartelle, anche il TIPO di permesso ed altre cose. Più precisamente, riporto un esempio di una proprietà Access.</div>
<div style="color: #222222; font-family: arial, helvetica, sans-serif; font-size: small;">
<br /></div>
<span style="color: #999999; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">FileSystemRights : FullControl</span><br />
<span style="color: #999999; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">AccessControlType : Allow</span><br />
<span style="color: #999999; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">IdentityReference : BUILTIN\Administrators</span><br />
<span style="color: #999999; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">IsInherited : True</span><br />
<span style="color: #999999; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">InheritanceFlags : ContainerInherit, ObjectInherit</span><br />
<span style="color: #999999; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">PropagationFlags : InheritOnly</span><br />
<span style="color: #999999; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;"><b>e ecco lo script:</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;"><b><br /></b></span>
<br />
<div class="MsoNormal" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; line-height: normal; margin-bottom: 0.0001pt;">
<b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$FolderPath</span></b><span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="font-family: "courier new"; font-size: 10pt;"> </span><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">Get-ChildItem</span><span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="font-family: "courier new"; font-size: 10pt;">Directory </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="font-family: "courier new"; font-size: 10pt;">Path </span><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"E:\Personali"</span><span style="font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; line-height: normal; margin-bottom: 0.0001pt;">
<b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$FolderPath</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">|</span></b><b><span style="color: blue; font-family: "courier new"; font-size: 10.0pt;">foreach</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">{</span></b><span style="font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$acls</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">Get-Acl</span><span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$_</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="font-family: "courier new"; font-size: 10pt;">FullName<o:p></o:p></span></div>
<div class="MsoNormal" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$printThis</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$true</span></b><span style="font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: blue; font-family: "courier new"; font-size: 10.0pt;">foreach</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$e</span></b><span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: blue; font-family: "courier new"; font-size: 10.0pt;">in</span></b><span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$acls</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="font-family: "courier new"; font-size: 10pt;">Access</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">){</span></b><span style="font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: blue; font-family: "courier new"; font-size: 10.0pt;">if</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$e</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="font-family: "courier new"; font-size: 10pt;">AccessControlType </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="font-family: "courier new"; font-size: 10pt;">eq </span><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"Allow"</span><span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="font-family: "courier new"; font-size: 10pt;">and </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$e</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="font-family: "courier new"; font-size: 10pt;">IdentityReference </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="font-family: "courier new"; font-size: 10pt;">eq </span><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"DASITALIA\DiegoCA"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">){</span></b><span style="font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$printThis</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$false</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">;</span></b><span style="font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">}</span></b><span style="font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">}</span></b><span style="font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: blue; font-family: "courier new"; font-size: 10.0pt;">if</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$printThis</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">){</span></b><span style="font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: "courier new"; font-size: 10pt;"> </span><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">write-host</span><span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"la cartella "</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$_</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="font-family: "courier new"; font-size: 10pt;">FullName</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">" non ha DiegoCA nelle ACLs"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">}</span></b><span style="font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; line-height: normal; margin-bottom: 0.0001pt;">
<b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">}</span></b></div>
<div style="color: #222222; font-family: arial, helvetica, sans-serif; font-size: small;">
<br /></div>
<div style="color: #222222; font-family: arial, helvetica, sans-serif;">
<b><span style="font-size: large;">Ricorsione (Recursive, Recurse)</span></b></div>
<div style="color: #222222; font-family: arial, helvetica, sans-serif;">
<span style="font-size: x-small;">Se volete usare questi script in tutte le <b>sottocartelle / sottodirectory,</b> dovrete semplicemente abilitare la ricorsione sul primo comando!</span></div>
<div style="color: #222222; font-family: arial, helvetica, sans-serif;">
<span style="font-size: x-small;"><br /></span></div>
<div class="MsoNormal" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; line-height: normal; margin-bottom: 0.0001pt;">
<b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$FolderPath</span></b><span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="font-family: "courier new"; font-size: 10pt;"> </span><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">Get-ChildItem</span><span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="font-family: "courier new"; font-size: 10pt;">Directory </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="font-family: "courier new"; font-size: 10pt;">Path </span><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"E:\Personali"</span><span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="font-family: "courier new"; font-size: 10pt;">Recurse</span><span style="font-family: "times new roman" , serif; font-size: 12.0pt;"><o:p></o:p></span></div>
<div style="color: #222222; font-family: arial, helvetica, sans-serif;">
<span style="font-size: x-small;"><br /></span></div>
<div style="color: #222222; font-family: arial, helvetica, sans-serif;">
<span style="font-size: x-small;">Et-Voilà!</span></div>
<div style="color: #222222; font-family: arial, helvetica, sans-serif;">
<span style="font-size: x-small;"><br /></span></div>
<div style="color: #222222; font-family: arial, helvetica, sans-serif;">
<span style="font-size: x-small;"><br /></span></div>
<div style="color: #222222; font-family: arial, helvetica, sans-serif;">
<span style="font-size: x-small;">Spero di avervi stuzzicato la fantasia, anche oggi.</span></div>
<h3>
Happy Scripting a tutti!</h3>
</div>
</div>
Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-90961387315176560792019-07-16T20:00:00.000+02:002019-07-16T20:00:00.604+02:00Uno script per esportare l'ultimo mese della cassetta postale in archivio .PST, con Powershell - direttamente dal server Exchange con Management Shell<br />
<div class="MsoNormal">
<span style="font-size: 50px;">B</span>uongiorno a tutti e <span style="mso-spacerun: yes;"> </span>benvenuti
ad un altro articolo del mio blog.<o:p></o:p></div>
<div class="MsoNormal">
Oggi, riagganciandomi all’<a href="http://scriptomane.blogspot.com/2019/06/esportare-una-cassetta-postale-in-pst.html" target="_blank">articolo precedente di Giugno</a>, sul
metodo di esportare una cassetta postale dal server con new-mailboxexportrequest,
voglio fornirvi uno script bello e pronto per schedulare l’archiviazione del mese
precedente alla data di esecuzione.<o:p></o:p></div>
<div class="MsoNormal">
Ovviamente, poi, potete modificarlo per ampliare o
restringere il periodo, accettare le date di inizio e di fine dai parametri…. …e
chi più ne ha, più ne metta.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Bando alle ciance, dunque: ecco lo script, prontissimo per
essere messo in un ps1 e lanciato a piacimento, serialmente...<o:p></o:p></div>
<div class="MsoNormal">
<br />
<br />
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Param</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">[</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">parameter</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Mandatory</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$true</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">,</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> HelpMessage</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"indirizzo principale della mailbox da archiviare"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)]</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">[</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">string</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">]</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$address</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">,</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">[</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">parameter</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Mandatory</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$true</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">,</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> HelpMessage</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"indica il percorso DI RETE dove salvare il PST (verrà appesa una
sottocartella con l'anno)"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)]</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">[</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">string</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">]</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$baseP</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">import-module activeDirectory<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: blue; font-family: "courier new"; font-size: 10.0pt;">if</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">Get-PSSnapin</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Name Microsoft</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Exchange</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Management</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">PowerShell</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">E2010 </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">ErrorAction SilentlyContinue</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">eq </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$null</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">){</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">add-pssnapin</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> Microsoft</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Exchange</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Management</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">PowerShell</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">E2010<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">}</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: green; font-family: "courier new"; font-size: 10.0pt;"># check di esistenza mailbox</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: blue; font-family: "courier new"; font-size: 10.0pt;">if</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">not </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$mb</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Get-mailbox </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$address</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">ErrorAction silentlycontinue</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">))</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">{</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">write-host</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"la casella
specificata non esiste"</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">exit<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">}</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">get-date</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: green; font-family: "courier new"; font-size: 10.0pt;"># ottengo il primo giorno del mese precedente</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$b</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">get-date</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">""</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">AddMonths</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(-</span></b><span style="color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">1</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)).</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Month</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"/"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Year</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$nomeMese</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$b</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Month </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">|</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">%{(</span></b><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">Get-Culture</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">).</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">DateTimeFormat</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">GetMonthName</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$_</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)}</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: green; font-family: "courier new"; font-size: 10.0pt;"># ottengo il primo giorno del mese corrente</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$c</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">get-date</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">""</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Month</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"/"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Year</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: blue; font-family: "courier new"; font-size: 10.0pt;">if</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">not</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">test-path</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">PathType Container </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$baseP</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"\"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$b</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Year</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">))){</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">New-Item</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">ItemType Directory </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Force </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Path </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$baseP</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"\"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$b</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Year</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">}</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$path</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$baseP</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"\"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$b</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Year</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"\"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$mb</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Name</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"_"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$nomeMese</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"-"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$b</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Year</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">".pst"</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">new-mailboxExportRequest </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$mb</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">FilePath </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$path</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">ContentFilter </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">{(</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">received </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">gt </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$b</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">and </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">received </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">lt </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$c</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)}</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Name </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$mb</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Name</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"--"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$nomeMese</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$b</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Year</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal">
<br />
<a name='more'></a></div>
<div class="MsoNormal">
<a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a>
</div>
<div class="MsoNormal">
<br />
<br />
Ma cosa fa questo bellissimo script?<o:p></o:p></div>
<div class="MsoNormal">
Ecco qui in sostanza:<o:p></o:p><br />
<br />
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Param</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">[</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">parameter</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Mandatory</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$true</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">,</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> HelpMessage</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"indirizzo principale della mailbox da archiviare"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)]</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">[</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">string</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">]</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$address</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">,</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">[</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">parameter</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Mandatory</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$true</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">,</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> HelpMessage</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"indica il percorso DI RETE dove salvare il PST (verrà appesa una
sottocartella con l'anno)"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)]</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">[</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">string</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">]</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$baseP</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br />
Accetta i parametri necessari (indirizzo di posta della
cassetta postale e percorso di base dove archiviare il PST (attenzione che l’account
del SERVER deve avere accesso alla cartella di destinazione. Vedere il
<a href="http://scriptomane.blogspot.com/2019/06/esportare-una-cassetta-postale-in-pst.html" target="_blank">precedente articolo</a> per spiegazioni).</div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<br />
<br />
<br />
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">import-module activeDirectory<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: blue; font-family: "courier new"; font-size: 10.0pt;">if</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">Get-PSSnapin</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Name Microsoft</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Exchange</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Management</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">PowerShell</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">E2010 </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">ErrorAction SilentlyContinue</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">eq </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$null</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">){</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">add-pssnapin</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> Microsoft</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Exchange</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Management</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">PowerShell</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">E2010<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">}</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br />
Importano sia il modulo di amministrazione di AD che la
snap-in di Exchange, qual’ora non fosse stata già importata.<o:p></o:p></div>
<div class="MsoNormal">
<br />
<br />
<br />
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: green; font-family: "courier new"; font-size: 10.0pt;"># check di esistenza mailbox</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: blue; font-family: "courier new"; font-size: 10.0pt;">if</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">not </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$mb</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Get-mailbox </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$address</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">ErrorAction silentlycontinue</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">))</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">{</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">write-host</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"la casella
specificata non esiste"</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">exit<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">}</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br />
Controlla che la mailbox esista effettivamente (e quindi
anche che l’indirizzo inserito non sia di un gruppo di distribuzione o di una public
folder…)<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br />
<br />
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">get-date</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: green; font-family: "courier new"; font-size: 10.0pt;"># ottengo il primo giorno del mese precedente</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$b</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">get-date</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">""</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">AddMonths</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(-</span></b><span style="color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">1</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)).</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Month</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"/"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Year</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$nomeMese</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$b</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Month </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">|</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">%{(</span></b><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">Get-Culture</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">).</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">DateTimeFormat</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">GetMonthName</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$_</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)}</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: green; font-family: "courier new"; font-size: 10.0pt;"># ottengo il primo giorno del mese corrente</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$c</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">get-date</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">""</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Month</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"/"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Year</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b></div>
<div class="MsoNormal">
<br />
Un po’ di operazioni sulle date…<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br />
<br />
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: blue; font-family: "courier new"; font-size: 10.0pt;">if</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">not</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">test-path</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">PathType Container </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$baseP</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"\"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$b</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Year</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">))){</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">New-Item</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">ItemType Directory </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Force </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Path </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$baseP</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"\"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$b</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Year</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">}</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$path</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$baseP</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"\"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$b</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Year</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"\"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$mb</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Name</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"_"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$nomeMese</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"-"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$b</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Year</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">".pst"</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">new-mailboxExportRequest </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$mb</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">FilePath </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$path</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">ContentFilter </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">{(</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">received </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">gt </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$b</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">and </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">received </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">lt </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$c</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)}</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Name </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$mb</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Name</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"--"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$nomeMese</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$b</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Year</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br />
La parte finale ed efficace dello script:</div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ol>
<li>Se non esiste la cartella <anno> nel percorso di
destinazione, la crea.</anno></li>
<li>Definisce il percorso e il nome file, concatenando: <span style="mso-spacerun: yes;"> </span><nomeutentecasella>_<mese>-<anno>.pst</anno></mese></nomeutentecasella></li>
<li>Lancia la richiesta di esportazione con il filtro sulle date, assegnando un nome leggibile al JOB (così poi nell’elenco delle request di
esportazione, si riesce a capirci qualcosa (vedere sempre l’<a href="http://scriptomane.blogspot.com/2019/06/esportare-una-cassetta-postale-in-pst.html" target="_blank">articolo precedente</a>).</li>
</ol>
<o:p></o:p><br />
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Beh, che dire: spero di aver aiutato qualche sysadmin e di
aver stuzzicato la vostra fantasia.<o:p></o:p></div>
<div class="MsoNormal">
Vi saluto e…<o:p></o:p></div>
<h3>
Happy Scripting a tutti!</h3>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<br />Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-83936446024781807892019-07-09T16:52:00.001+02:002019-07-09T17:45:36.159+02:00Exchange Powershell (EMS) - aggiungere più utenti ad un gruppo di distribuzione con una riga sola di comando.<span style="font-size: 50px;">B</span>uongiorno a tutti,<br />
oggi dovevo aggiungere più utenti e rimuoverne altri da un distribution group di Exchange.<br />
Come sapete cerco di fare tutto dalla shell powershell di management (Exchange Management Shell), ma stavolta è stato "tricky".<br />
<br />
Ho trovato una soluzione elegante e quindi scrivo questo mini-post....<br />
<br />
Pronti? via.<br />
<br />
<h2>
Per aggiungere più membri contemporaneamente ad un gruppo di distribuzione con PowerShell</h2>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"utente1"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">,</span></b><span style="font-family: "courier new"; font-size: 10pt;"> </span><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"utente2"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">,</span></b><span style="font-family: "courier new"; font-size: 10pt;"> </span><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"utente3"</span><span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">|</span></b><span style="font-family: "courier new"; font-size: 10pt;"> Add-DistributionGroupMember nomeDG@dominio</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="font-family: "courier new"; font-size: 10pt;">it </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="font-family: "courier new"; font-size: 10pt;">BypassSecurityGroupManagerCheck</span><span style="font-family: "times new roman" , serif; font-size: 12.0pt;"><o:p></o:p></span></div>
<br />
con questo trick one-liner (come si dice "nel gergo di noi scriptomani") possiamo evitare la sintassi con il ciclo foreach, le graffe etc...<br />
Elegante, no?<br />
<br />
<br />
<a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a>
<br />
<br />
<h2>
Per rimuovere più membri contemporaneamente da un gruppo di distribuzione con PowerShell</h2>
<div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0.0001pt;">
<span style="color: grey; font-family: "courier new"; font-size: 10pt;">"utente1"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10pt;">,</span></b><span style="font-family: "courier new"; font-size: 10pt;"> </span><span style="color: grey; font-family: "courier new"; font-size: 10pt;">"utente2"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10pt;">,</span></b><span style="font-family: "courier new"; font-size: 10pt;"> </span><span style="color: grey; font-family: "courier new"; font-size: 10pt;">"utente3"</span><span style="font-family: "courier new"; font-size: 10pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10pt;">|</span></b><span style="font-family: "courier new"; font-size: 10pt;"> Remove-DistributionGroupMember nomeDG@dominio</span><b><span style="color: navy; font-family: "courier new"; font-size: 10pt;">.</span></b><span style="font-family: "courier new"; font-size: 10pt;">it </span><b><span style="color: navy; font-family: "courier new"; font-size: 10pt;">-</span></b><span style="font-family: "courier new"; font-size: 10pt;">BypassSecurityGroupManagerCheck</span><span style="font-family: "times new roman" , serif; font-size: 12pt;"><o:p></o:p></span></div>
<br />
... in sostanza la stessa cosa.<br />
<br />
<br />
Beh, che dire: vi ho promesso un articolo "mini", no?<br />
Spero di aver facilitato la vita a qualche sysadmin e stuzzicato la vostra fantasia.<br />
<br />
<h3>
Happy Scripting a tutti!</h3>
</div>
Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-31758341710317509942019-06-25T15:22:00.002+02:002019-07-10T13:25:14.942+02:00Esportare una cassetta postale in PST (archiviare) con POWERSHELL, direttamente dal server Exchange con Powershell EMS<br />
EDIT: Se volete uno script pronto per archiviare una cassetta postale, che accetta parametri etc...<br />
... sto lavorando a un nuovo POST.<br />
Iscrivetevi come follower al BLOG (o con il vostro lettore di notizie RSS): verrete avvisati quando pubblicherò l'articolo! :-)<br />
<br />
<div class="MsoNormal">
<span style="font-size: 50px;">A</span> volte ci si trova nella necessità di creare delle
esportazioni di cassetta postale in file che possano essere esaminati o aperti
in momenti successivi.<o:p></o:p></div>
<div class="MsoNormal">
É il caso, ad esempio, di quando si hanno lavoratori remoti
(smart-working o personale con funsioni principalmente esterne) e una
connessione “limitata”.<o:p></o:p></div>
<div class="MsoNormal">
Il problema che si pone in quel caso è che archiviare un PST
su un file server (perché possa essere sottoposto a backup e non sia a rischio
di rottura del disco fisso del PC) risulta un’operazione che satura tutta la
larghezza di banda… Questo perché il client deve tenere aperto il file e, non
so perché in dettaglio, manda dati avanti e indietro come un pazzo…<o:p></o:p></div>
<div class="MsoNormal">
La soluzione quick & dirty sarebbe di creare il file PST
in locale e poi spostarlo sul server… tuttavia anche questa ha parecchie
limitazioni, così ovvie che non le scrivo qui.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Quindi, cosa fare per essere sicuri di archiviare
automaticamente le mail in una cassetta postale con powershell (Exchange Management
Console) in Microsoft Exchange Server 2010 SP3 (ma anche nelle versioni
successive)?<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Ecco i comandi che ci possono essere utili:<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li><b>New-MailboxExportRequest (iniziare la richiesta di
esportazione)</b></li>
<li><b>Get-MailboxExportRequest (ottenere le richieste di
esportazione in corso, e anche terminate)</b></li>
<li><b>Get-MailboxExportRequestStatistics (ottenere le
satistiche circa l’avanzamento della richiesta)</b></li>
<li><b>Remove-MailboxExportRequest (rimuove la request dalla
coda, utile soprattutto per far pulizia).</b></li>
</ul>
<br />
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEik7paM3C8W4EeL5olHouGKQHnyYnmuVerkjgaEXtOK8QqgQ1himiCuWrZJKNR1HOsXRewpiA-fM3yzRIOY2_hpwsCes2o1jIC9eOf3ipcdt_sgJCP_ms-utYaMuo5Nz5_uqQ3KguKe0Rft/s1600/2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="860" data-original-width="990" height="554" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEik7paM3C8W4EeL5olHouGKQHnyYnmuVerkjgaEXtOK8QqgQ1himiCuWrZJKNR1HOsXRewpiA-fM3yzRIOY2_hpwsCes2o1jIC9eOf3ipcdt_sgJCP_ms-utYaMuo5Nz5_uqQ3KguKe0Rft/s640/2.PNG" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br /></div>
<h1>
Premesse<o:p></o:p></h1>
<h2>
Caricare la snap-in di exchange (ovvio)<o:p></o:p></h2>
<div class="MsoNormal">
Tutti questi comandi vanno lanciati da una powershell con la
snap-in di Microsoft Exchange, quindi, se avete una powershell normale,
lanciate:<o:p></o:p></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: blue; font-family: "courier new"; font-size: 10.0pt;">if</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">Get-PSSnapin</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Name Microsoft</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Exchange</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Management</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">PowerShell</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">E2010 </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">ErrorAction SilentlyContinue</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">eq </span><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$null</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">){</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">add-pssnapin</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> Microsoft</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Exchange</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Management</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">PowerShell</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">E2010<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">}</span></b><span style="font-family: "times new roman" , serif; font-size: 12.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
E avrete la snap-in amministrativa caricata.<o:p></o:p></div>
<h2>
Non si può salvare in un percorso LOCALE del server<o:p></o:p></h2>
<div class="MsoNormal">
<span style="mso-spacerun: yes;"> </span>deve essere una share
di rete (anche se potete usare tranquillamente \\NOMESERVER\C$) <o:p></o:p></div>
<div class="MsoNormal">
(o almeno IO non posso, dato che ho un DAG – un cluster di
exchange – ma suppongo sia così per tutti).<o:p></o:p></div>
<h3>
Accesso share di destinazione<o:p></o:p></h3>
<div class="MsoNormal">
La share di rete deve permettere l’accesso in scrittura agli
account <b>COMPUTER</b> dei server Exchange nella vostra organizzazione.<o:p></o:p></div>
<div class="MsoNormal">
Quindi, autorizzate, altrimenti riceverete un bel “Access
Denied”</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<span style="color: #274e13;"><b>FINE DELLE PREMESSE</b></span><o:p></o:p></div>
<div class="MsoNormal">
<span style="color: #274e13;"><b><br /></b></span></div>
<div class="MsoNormal">
<a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a>
</div>
<br />
<br />
<br />
<h1>
Esportazione di tutta la cassetta postale<o:p></o:p></h1>
<div class="MsoNormal">
Ve la faccio breve: ecco come fare se si vuole esportare TUTTO il contenuto della
cassetta postale.<o:p></o:p><br />
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">New-MailboxExportRequest cassetta</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">postale@dominio</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">it </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">FilePath </span><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"\\server\share\...\archivioCassettaPostale.pst"</span><span style="font-family: "times new roman" , serif; font-size: 12.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
E tutto verrà salvato.<o:p></o:p><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje4LS5jSlfh5026d1xQchesnYUbRSJDdMRXfk0Hdus2fpykhW_1X1OBdjY9axIK1YSb1Ld0k3aAvSsXynbBBABBIDvIabQP6nHx043PPUuG4awnlGvV4IhRekR7HVx2ojSPtxY5wmg50D4/s1600/1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="870" data-original-width="984" height="564" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje4LS5jSlfh5026d1xQchesnYUbRSJDdMRXfk0Hdus2fpykhW_1X1OBdjY9axIK1YSb1Ld0k3aAvSsXynbBBABBIDvIabQP6nHx043PPUuG4awnlGvV4IhRekR7HVx2ojSPtxY5wmg50D4/s640/1.PNG" width="640" /></a></div>
<br /></div>
<h1>
Le opzioni di New-MailboxExportRequest <o:p></o:p></h1>
<div class="MsoNormal">
Ecco qui le opzioni da get-help del comando.<o:p></o:p></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;">New-MailboxExportRequest<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-Mailbox]
<mailboxormailuseridparameter><o:p></o:p></mailboxormailuseridparameter></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>-FilePath <longpath><o:p></o:p></longpath></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-AcceptLargeDataLoss]<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;">
</span>[-AssociatedMessagesCopyOption <donotcopy copy="" mapbymessageclass="">]<o:p></o:p></donotcopy></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-BadItemLimit
<unlimited>]<o:p></o:p></unlimited></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-BatchName
<string>]<o:p></o:p></string></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-CompletedRequestAgeLimit
<unlimited>]<o:p></o:p></unlimited></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-Confirm]<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-ConflictResolutionOption
<keepsourceitem keepall="" keeplatestitem="">]<o:p></o:p></keepsourceitem></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-ContentFilter
<string>]<o:p></o:p></string></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-ContentFilterLanguage
<cultureinfo>]<o:p></o:p></cultureinfo></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-DomainController <fqdn>]<o:p></o:p></fqdn></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-ExcludeDumpster]<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-ExcludeFolders
<string>]<o:p></o:p></string></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-IncludeFolders
<string>]<o:p></o:p></string></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-InternalFlags
<internalmrsflag>]<o:p></o:p></internalmrsflag></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-IsArchive]<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-LargeItemLimit
<unlimited>]<o:p></o:p></unlimited></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-MRSServer <fqdn>]<o:p></o:p></fqdn></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-Name <string>]<o:p></o:p></string></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-Priority <normal high="">]<o:p></o:p></normal></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-RemoteCredential
<pscredential>]<o:p></o:p></pscredential></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-RemoteHostName
<fqdn>]<o:p></o:p></fqdn></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-SkipMerging
<skippablemergecomponent>]<o:p></o:p></skippablemergecomponent></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-SourceRootFolder
<string>]<o:p></o:p></string></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-Suspend]<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-SuspendComment
<string>]<o:p></o:p></string></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-TargetRootFolder
<string>]<o:p></o:p></string></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-WhatIf]<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[-WorkloadType <none emergency="" loadbalancing="" local="" offboarding="" onboarding="" remotepstexport="" remotepstingestion="" syncaggregation="" tenantupgrade="">]<o:p></o:p></none></span></div>
<div class="MsoNormal">
<span style="color: #548235; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #548235; mso-style-textfill-fill-colortransforms: lumm=75000; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"><span style="mso-spacerun: yes;"> </span>[<commonparameters>]<o:p></o:p></commonparameters></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Focalizziamoci per ora solo su:<o:p></o:p></div>
<div class="MsoNormal">
<b>-BadItemLimit<o:p></o:p></b></div>
<div class="MsoNormal">
<b>-ContentFilter<o:p></o:p></b></div>
<div class="MsoNormal">
<b>-ContentFilterLanguage<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<h2>
BadItemLimit: consentire l’errore su N items e proseguire<o:p></o:p></h2>
<div class="MsoNormal">
Con questa opzione possiamo specificare quanti errori “tollerare”
prima che il job fallisca. In base alle necessità si può variare il numero,
tuttavia ho riscontrato che i job lanciati con il default falliscono un po’
troppo spesso. Quindi, se vogliamo tollerare un po’ di perdita, per
consentirci di lanciare il comando unattended, sarà bene aumentare un po’…<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<h2>
ContentFilter: un filtro per selezionare i messaggi da esportare<o:p></o:p></h2>
<div class="MsoNormal">
… e qui abbiamo a disposizione un intero arsenale di opzioni,
pari quasi alle proprietà dei singoli messaggi….<o:p></o:p></div>
<div class="MsoNormal">
Prendiamo ad esempio questo filtro<o:p></o:p></div>
<div class="MsoNormal">
<span style="background: #fafafa; color: black; font-family: "consolas"; font-size: 10.5pt; line-height: 107%;">{(body</span><span class="hljs-nomarkup"><span style="-webkit-text-stroke-width: 0px; box-sizing: inherit; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; widows: 2; word-spacing: 0px;"> -like</span></span><span style="-webkit-text-stroke-width: 0px; float: none; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; widows: 2; word-spacing: 0px;"> </span><span class="hljs-string"></span><span style="background: #fafafa; color: #a31515; font-family: "consolas"; font-size: 10.5pt; line-height: 107%;"><span style="-webkit-text-stroke-width: 0px; box-sizing: inherit; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; widows: 2; word-spacing: 0px;">"*company*"</span></span><span style="background: #fafafa; color: black; font-family: "consolas"; font-size: 10.5pt; line-height: 107%;"><span style="-webkit-text-stroke-width: 0px; float: none; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; widows: 2; word-spacing: 0px;">)</span></span><span class="hljs-parameter"><span style="background: #fafafa; color: #007d9a; font-family: "consolas"; font-size: 10.5pt; line-height: 107%;"><span style="-webkit-text-stroke-width: 0px; box-sizing: inherit; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; widows: 2; word-spacing: 0px;"> -and</span></span></span><span style="background: #fafafa; color: black; font-family: "consolas"; font-size: 10.5pt; line-height: 107%;"><span style="-webkit-text-stroke-width: 0px; float: none; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; widows: 2; word-spacing: 0px;"> (body</span><span class="hljs-nomarkup"><span style="-webkit-text-stroke-width: 0px; box-sizing: inherit; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; widows: 2; word-spacing: 0px;"> -like</span></span><span style="-webkit-text-stroke-width: 0px; float: none; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; widows: 2; word-spacing: 0px;"> </span><span class="hljs-string"></span><span style="background: #fafafa; color: #a31515; font-family: "consolas"; font-size: 10.5pt; line-height: 107%;"><span style="-webkit-text-stroke-width: 0px; box-sizing: inherit; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; widows: 2; word-spacing: 0px;">"*profit*"</span></span></span><span style="background: #fafafa; color: black; font-family: "consolas"; font-size: 10.5pt; line-height: 107%;"><span style="-webkit-text-stroke-width: 0px; float: none; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; widows: 2; word-spacing: 0px;">)</span></span><span class="hljs-parameter"><span style="background: #fafafa; color: #007d9a; font-family: "consolas"; font-size: 10.5pt; line-height: 107%;"><span style="-webkit-text-stroke-width: 0px; box-sizing: inherit; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; widows: 2; word-spacing: 0px;"> -and</span></span></span><span style="background: #fafafa; color: black; font-family: "consolas"; font-size: 10.5pt; line-height: 107%;"><span style="-webkit-text-stroke-width: 0px; float: none; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; widows: 2; word-spacing: 0px;"> (Received</span><span class="hljs-nomarkup"><span style="-webkit-text-stroke-width: 0px; box-sizing: inherit; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; widows: 2; word-spacing: 0px;"> -lt</span></span><span style="-webkit-text-stroke-width: 0px; float: none; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; widows: 2; word-spacing: 0px;"> </span><span class="hljs-string"></span><span style="background: #fafafa; color: #a31515; font-family: "consolas"; font-size: 10.5pt; line-height: 107%;"><span style="-webkit-text-stroke-width: 0px; box-sizing: inherit; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; widows: 2; word-spacing: 0px;">"01/01/2018"</span></span></span><span style="background: #fafafa; color: black; font-family: "consolas"; font-size: 10.5pt; line-height: 107%;"><span style="-webkit-text-stroke-width: 0px; float: none; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; widows: 2; word-spacing: 0px;">)}</span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background: #fafafa; color: black; font-family: "consolas"; font-size: 10.5pt; line-height: 107%;">Ci consente di esportare solo i
messaggi che contengono le parole company e profit nel corpo del messaggio e
che sono ricevuti prima del primo Gennaio 2018.</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<h2>
ContentFilterLanguage : possiamo specificare la localizzazione (culture) del
filtro<o:p></o:p></h2>
<div class="MsoNormal">
A che mi serve, direte voi?<o:p></o:p></div>
<div class="MsoNormal">
Perché se usate filtri con il nome delle cartelle o con il
nome di determinati altri parametri che sono soggetti a localizzazione (quindi
hanno un nome diverso se la cassetta postale è impostata per la localizzazione
in Italiano, rispetto che in inglese, ad esempio), dovrete specificare il che “culture”
è il filtro che usate…<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
se avete bisogno di altre opzioni ecco il link ufficiale
(non cambia da Exchange 2010 al 2019):<o:p></o:p></div>
<div class="MsoNormal">
<a href="https://docs.microsoft.com/en-us/powershell/module/exchange/mailboxes/new-mailboxexportrequest?view=exchange-ps">https://docs.microsoft.com/en-us/powershell/module/exchange/mailboxes/new-mailboxexportrequest?view=exchange-ps</a><o:p></o:p><br />
<br /></div>
<h1>
Esportazione di una cassetta postale con Filtro.<o:p></o:p></h1>
<div class="MsoNormal">
Ecco un classico filtro che potete applicare per un job di
archiviazione ricorsivo. Usiamo le date con le operazioni, per identificare un intervallo
ed esportare solo le mail inviate o ricevute entro quell’intervallo.<o:p></o:p></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">get-date</span><span style="font-family: "times new roman" , serif; font-size: 12.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">New-MailboxExportRequest cassetta</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">postale@dominio</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">it </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">FilePath </span><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"\\server\share\...\archivioCassettaPostale.pst"</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">ContentFilter </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">{(</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">received </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">lt </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">get-date</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">).</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">AddDays</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(-</span></b><span style="color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">60</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">).</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">AddHours</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(-</span></b><span style="color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">1</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">*</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Hour</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">).</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">AddMinutes</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(-</span></b><span style="color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">1</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">*</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Minute</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">))</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">and </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">received </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">gt </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">get-date</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">).</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">AddDays</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(-</span></b><span style="color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">90</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">).</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">AddHours</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(-</span></b><span style="color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">1</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">*</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Hour</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">).</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">AddMinutes</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(-</span></b><span style="color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">1</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">*</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Minute</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)}</span></b><span style="font-family: "times new roman" , serif; font-size: 12.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Come vedete, memorizzo prima la data attuale in $a, quindi vado
a togliere le ore e i minuti dalla data, per riportarla a mezzanotte del giorno
selezionato.<o:p></o:p></div>
<div class="MsoNormal">
Qui selezioniamo tutti i messaggi inviati o ricevuti tra i
60 e i 90 giorni prima dalla data attuale, con<o:p></o:p></div>
<div class="MsoNormal">
received -lt (less than) e received -gt (greater than)<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
</div>
<br /></div>
<div class="MsoNormal">
<br /></div>
<h1>
Alcuni Trucchetti<o:p></o:p></h1>
<h2>
ottenere il primo ed ultimo giorno del mese corrente (o di una data in
mezzo al mese), con Powershell<o:p></o:p></h2>
<h3>
Primo giorno del mese in powershell<o:p></o:p></h3>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">AddDays</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(-</span></b><span style="color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">1</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">*(</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Day-1</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">))</span></b><span style="font-family: "times new roman" , serif; font-size: 12.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: green; font-family: "courier new"; font-size: 10.0pt;">#se invece il mese è definito (SO già che è MARZO):</span><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">get-date</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: grey; font-family: "courier new"; font-size: 10.0pt;">"03/2019"</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="font-family: "times new roman" , serif; font-size: 12.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<h3>
Ultimo giorno del mese in powershell</h3>
<h3>
<o:p></o:p></h3>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">Get-date</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">((</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Month</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><span style="color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">1</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">).</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">ToString</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">()+</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">”</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">/</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">”</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">+</span></b><b><span style="color: maroon; font-family: "courier new"; font-size: 10.0pt;">$a</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">Year</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">ToString</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">())).</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;">AddDays</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">(-</span></b><span style="color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">1</span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Questi esempi assumono $a = una data ottenuta con get-date<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<h1>
Fare Pulizia delle mailboxExportRequest<o:p></o:p></h1>
<div class="MsoNormal">
Come vedete nello screenshot più in basso, le richieste,
anche quando vengono completate, rimangono in “storico”. Questo per consentire
a chi dovesse lanciarne molte di visualizzarne i risultati.<o:p></o:p></div>
<div class="MsoNormal">
Ecco quindi come fare pulizia, una volta che sono tutte
terminate, in un modo o nell’altro:<o:p></o:p></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">get-MailboxExportRequest </span><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt;">|</span></b><span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> Remove-MailboxExportRequest</span><span style="font-family: "times new roman" , serif; font-size: 12.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
ed ecco il risultato<o:p></o:p></div>
<div class="MsoNormal">
<img3><o:p></o:p></img3></div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlVuTrge2OorlZO7vkrfcNvQ7l1LavhGoIajXdLmMcnDQq9hrROKLmCuNy74EFwHnrW6DMOdBpKKVPhr7EJK5TpV6NDXKpREW8aKYwg-izfdGiqdkGPGXgQoh_BDKZCy7UbddjfQZoTxD_/s1600/3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="502" data-original-width="962" height="332" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlVuTrge2OorlZO7vkrfcNvQ7l1LavhGoIajXdLmMcnDQq9hrROKLmCuNy74EFwHnrW6DMOdBpKKVPhr7EJK5TpV6NDXKpREW8aKYwg-izfdGiqdkGPGXgQoh_BDKZCy7UbddjfQZoTxD_/s640/3.PNG" width="640" /></a></div>
<br /></div>
<br />
<br />
<br />
Bene, spero di aver stuzzicato anche oggi la vostra voglia di scriptare... vi mando il solito augurio:<br />
<br />
<span style="font-size: x-large;"><b>HAPPY SCRIPTING A TUTTI!</b></span><br />
<br />Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-19182220096806275002019-04-01T19:30:00.000+02:002019-06-24T20:51:32.484+02:00BONUS POST - dsget, dsquery, dsadd, dsmod - usare dsadd per creare molti gruppi di sicurezza in una specifica OU<span style="font-size: x-large;"><b>B</b></span>uongiorno a tutti e benvenuti a questo nuovo post del blog.<br />
Il mini-post di quest'oggi è una sorta di BONUS TRACK della miniserie sugli strumenti di gestione di Active Directory da riga di comando di cui posto qui i links:<br />
<br />
<br />
<br />
Oggi ho avuto la possibilità di applicare nella realtà un dei miei post recenti riguardo DSADD. Ho avuto la necessità di:<br />
<br />
<h2>
creare più security groups da un elenco, in una specifica OU, con uno script</h2>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.rocketmarket.it" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br /></div>
<div>
Mi sono trovato in una situazione in cui dovevo creare numerosi gruppi, di tipo "domain local-security" sotto una specifica Organizational Unit di AD.</div>
<div>
<br /></div>
<div>
Ed ecco che ho "risfoderato" l'articolo che avevo scritto e messo un comando in un FOR:</div>
<div>
<br /></div>
<div>
<span style="color: #274e13; font-size: x-small;">FOR /F "usebackq delims=;" %a IN ("ADGRoups_daCreare.txt") DO @dsadd group "CN=%a,OU=PEC_MailDocPro,OU=xPermissions,OU=RUOLI,DC=DASItalia,DC=local" -secgrp yes -scope l -desc "gruppo di profilo sicurezza per maildocpro"</span></div>
<div>
<span style="color: #274e13; font-size: x-small;"><br /></span></div>
<div>
Ed ecco il nostro bellissimo risultato: gruppi creati in pochi secondi.</div>
<div>
Gli errori sono derivati dal fatto che alcuni gruppi li avevo già creati manualmente.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgui2DNmmMWhYbFLuW8jOTqaoivyp82FhhTjIA0OJ5N1UrGSfRCoK6CQFdwJPM2Q8cETiJZAs3eTijrrcdIXDbqASr5y_caiQg_ORV6c4yp1HgvXQMGzY0sOb07wrcTkejSquSfyyXc9I7e/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1064" data-original-width="1208" height="281" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgui2DNmmMWhYbFLuW8jOTqaoivyp82FhhTjIA0OJ5N1UrGSfRCoK6CQFdwJPM2Q8cETiJZAs3eTijrrcdIXDbqASr5y_caiQg_ORV6c4yp1HgvXQMGzY0sOb07wrcTkejSquSfyyXc9I7e/s320/1.png" width="320" /></a></div>
<div>
<b>HAPPY SCRIPTING a tutti!</b></div>
Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-24713234377597910662019-02-12T20:21:00.000+01:002019-06-24T20:52:48.789+02:00Le potenti hash table di powershell - episodio 2<br />
<div class="MsoNormal">
Buongiorno e benvenuti a questo secondo ed ultimo episodio di
questa mini-serie dedicata alle hash table di Powershell. <o:p></o:p></div>
<div class="MsoNormal">
In questa “puntata” dedicherò un po’ di tempo ai possibili
modi di interagire ciclicamente con una hashtable.<o:p></o:p></div>
<div class="MsoNormal">
Se non avete letto il primo episodio di questa mini-serie,
vi consiglio di andare a leggervelo qui.<o:p></o:p></div>
<div class="MsoNormal">
Detto questo, mettiamoci all’opera.<o:p></o:p></div>
<h1>
Ciclare su una hash table – non così diretto<o:p></o:p></h1>
<div class="MsoNormal">
Come potete notare, una hashtable non è una collection di
oggetti nuda e cruda, ma ogni voce della hashtable ha un nome e un valore.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8b61oWLvQXmqawF5S6Gxhd4BYg5HI-OHZXk8Hkqtxtj-rnfuWThU1oJJkdzWPxCBTE3W7eLFF8uKxmW_G_M5E0iI65Uvt-SiZdMHHU2QJ_cnHOpH4_4SGZvnCaz9Y3BUqK200soNHimKg/s1600/Loop1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="536" data-original-width="1211" height="282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8b61oWLvQXmqawF5S6Gxhd4BYg5HI-OHZXk8Hkqtxtj-rnfuWThU1oJJkdzWPxCBTE3W7eLFF8uKxmW_G_M5E0iI65Uvt-SiZdMHHU2QJ_cnHOpH4_4SGZvnCaz9Y3BUqK200soNHimKg/s640/Loop1.PNG" width="640" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Come vedete dalle prove che<span style="mso-spacerun: yes;">
</span>ho fatto in questa immagine, non è possibile NEMMENO richiamare la
proprietà Name o Value di ogni foreach, mentre è necessario utilizzare il metodo
getEnumerator() <o:p></o:p></div>
<div class="MsoNormal">
<br />
<a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a></div>
<h2>
GetEnumerator() … …con qualche limite<o:p></o:p></h2>
<div class="MsoNormal">
Ecco quindi venirci in aiuto il GetEnumerator che, tuttavia,
impone qualche limite sull’uso di oggetti come chiave. Vedete nell’immagine sopra
che, quando il ciclo è arrivato sul punto in cui la chiave è un oggetto , lo
script è andato in errore… <o:p></o:p></div>
<div class="MsoNormal">
Quindi va benissimo usare questo sistema con hashtable testuali,
ma quando abbiamo chiavi particolari, meglio usare il metodo che segue…<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<h2>
Il metodo migliore, secondo me: usiamo il metodo .Keys<o:p></o:p></h2>
<div class="MsoNormal">
Con il metodo .Keys della classe HashTable, otteniamo un
array di tutte le chiavi. Utilizzando poi la notazione con le parentesi quadre
per recuperare i valori dalla array, possiamo ciclare in tutta libertà sulla
nostra hashtable.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQGMQ0u-5PL3BRYDilBf0FRBdMv065urgb62uycitf5Hj_e3JQQMkwe6K8ooyaBK1YcDIjQNPxqffjN3kTim5mOwqHYdrPFTsk3ew3ax6N4AzcfATwMrXs4aX7b3dashNwqjWp52j8emmQ/s1600/Loop2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="536" data-original-width="1211" height="282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQGMQ0u-5PL3BRYDilBf0FRBdMv065urgb62uycitf5Hj_e3JQQMkwe6K8ooyaBK1YcDIjQNPxqffjN3kTim5mOwqHYdrPFTsk3ew3ax6N4AzcfATwMrXs4aX7b3dashNwqjWp52j8emmQ/s640/Loop2.PNG" width="640" /></a></div>
<br />
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<o:p><br /></o:p></div>
<div class="MsoNormal">
<o:p><br /></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Bene! Anche per oggi spero di aver stuzzicato la vostra
voglia di scriptare e la vostra fantasia.<o:p></o:p></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><span style="font-size: x-large;">Happy Scripting a
tutti!</span><o:p></o:p></b></div>
<br />Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-19046985120348276342019-02-10T09:00:00.000+01:002019-06-24T20:54:27.876+02:00Le potenti hash table di powershell - episodio 1<br />
<div class="MsoNormal">
<span style="font-size: x-large;"><b>B</b></span>uongiorno a tutti e benvenuti in un nuovo POST del mio blog:
“Lo scriptomane”<o:p></o:p></div>
<div class="MsoNormal">
Oggi parliamo di un bellissimo costrutto del linguaggio
powershell: le hash table (o hashtable, le chiamano tutti in entrambi i modi).<o:p></o:p></div>
<div class="MsoNormal">
Le hash tables sono delle array associative in powershell.
Quindi sono delle array con un indice non numerico, ma che può essere testuale,
senza un ordine prefissato (salvo creare una [ordered] hashtable, vedere link
di approfondimento + avanti), ma che accetta l’inserimento di variabili associate
ad un index (o chiave, key).<o:p></o:p></div>
<div class="MsoNormal">
In powershell le hash tables non sono un tipo di variabile,
ma ognuna di esse è un’istanza dell’oggetto System.Collections.Hashtable ed è
quindi possibile richiamare ed utilizzare i metodi di quest’oggetto.<o:p></o:p></div>
<div class="MsoNormal">
Per approfondire potete andare sul sito di microsoft <a href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_hash_tables?view=powershell-6">qui</a>.<o:p></o:p></div>
<div class="MsoNormal">
La sintassi delle hashtable è questa: <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="background: #fafafa; color: black; font-family: "consolas"; font-size: 10.5pt; line-height: 107%;">@{ <name> = <value>;
[<name> = <value> ] ...}</value></name></value></name></span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Sicchè, come avrete capito, vi possono essere infinite
coppie di chiave – valore.<o:p></o:p></div>
<div class="MsoNormal">
Quest’oggetto veramente interessante di powershell ha una
caratteristica molto potente:<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Ogni valore può
essere qualsiasi cosa: un’oggetto, un’istanza di oggetto, una variabile, un’altra
hashtable, etc… INOLTRE ogni chiave, a sua volta, può essere qualsiasi cosa
(questo non molti lo immaginano), con poche limitazioni che ne derivano.<o:p></o:p></b></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><br /></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizY0YRgipevoPiXBDa94mNpiRadY2Y9W4IGQ_No2e3o3M80sGxeKae8sHzXAn1xmndttQPZ3kglzNiWy_oQh4QrWMgED55vPFTOSPVBZwVfeSnXQfgcf4r0axkEahQD-VsiOnmNy8FIPPa/s1600/HashCanContainObjects.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1001" data-original-width="1047" height="610" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizY0YRgipevoPiXBDa94mNpiRadY2Y9W4IGQ_No2e3o3M80sGxeKae8sHzXAn1xmndttQPZ3kglzNiWy_oQh4QrWMgED55vPFTOSPVBZwVfeSnXQfgcf4r0axkEahQD-VsiOnmNy8FIPPa/s640/HashCanContainObjects.PNG" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJJ5AdmXPb9IQ0VA7h4XRDLHYWy4FcuubRuH3h7gN81gcvn4MTw5WGEKFGxREWCNsVcdrCQufTnUHIO_pL5M-0QcFeTDdg0wa_iQRMT0xEyb58sKnLwAM5dSrCCDlxS3hgdwfOgZ6JAdXk/s1600/HashCanContainObjectsInKey.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="536" data-original-width="1211" height="282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJJ5AdmXPb9IQ0VA7h4XRDLHYWy4FcuubRuH3h7gN81gcvn4MTw5WGEKFGxREWCNsVcdrCQufTnUHIO_pL5M-0QcFeTDdg0wa_iQRMT0xEyb58sKnLwAM5dSrCCDlxS3hgdwfOgZ6JAdXk/s640/HashCanContainObjectsInKey.PNG" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOzZqRRmOhOm4eWmQTXdWELibJnpy4SjD9U2an_9SleLIHPISZAitoCmvJQ1KHdpPpZBcS7F-ZkFHYEueejIhgS3Ga_VjlH4bM95JT1zTAeA1SqLStyGkaOaTc4eQ3i0ILsUZLp7Qsc3GS/s1600/HashCanContainObjectsInKey2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="536" data-original-width="1211" height="282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOzZqRRmOhOm4eWmQTXdWELibJnpy4SjD9U2an_9SleLIHPISZAitoCmvJQ1KHdpPpZBcS7F-ZkFHYEueejIhgS3Ga_VjlH4bM95JT1zTAeA1SqLStyGkaOaTc4eQ3i0ILsUZLp7Qsc3GS/s640/HashCanContainObjectsInKey2.PNG" width="640" /></a></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><br /></b></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><br /></b></div>
<div class="MsoNormal">
In questo senso assomigliano moltissimo alle array di PHP
(altro linguaggio a me caro).<o:p></o:p></div>
<div class="MsoNormal">
Stando così le cose, mi sembra chiaro che, con un po’ di
fantasia, è possibile creare oggetti per stoccare ordinatamente un po’
qualsiasi cosa, davvero con pochissime limitazioni.<o:p></o:p><br />
<br />
<br />
<a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a></div>
<div class="MsoNormal">
<br /></div>
<h1>
Come creare una Hash Table in powershell<o:p></o:p></h1>
<div class="MsoNormal">
A questo punto, direi di vedere come si crea una Hash Table.
La sintassi è semplicissma:<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="background: white; color: maroon; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">$toMap</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">=</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">
@</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">{}</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;"><o:p></o:p></span></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In questo modo avremo creato una hash table vuota. Oppure<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="background: white; color: maroon; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">$toMap</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">=</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">
@</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">{“chiave”=”valore”; “chiave2”=”valore2”}</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;"><o:p></o:p></span></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
… per creare una HashTable già “popolata”.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<span style="font-family: "calibri" , sans-serif; font-size: 11.0pt; line-height: 107%;"><br clear="all" style="mso-special-character: line-break; page-break-before: always;" />
</span>
<br />
<div class="MsoNormal">
<br /></div>
<h1>
Come inserire un valore nuovo in una Hash Table in powershell<o:p></o:p></h1>
<div class="MsoNormal">
La sintassi è veramente semplice, si usano le parentesi
quadre, indicando la chiave.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: maroon; font-family: "courier new"; font-size: 10.0pt;">$toMap</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">[</span></b><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"chiaveNuova"</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">]=</span></b><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"valore"</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;"># con chiave testuale e
valore testuale</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: maroon; font-family: "courier new"; font-size: 10.0pt;">$toMap</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">[</span></b><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"chiaveNuovissima"</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">]=</span></b><b><span style="background: white; color: maroon; font-family: "courier new"; font-size: 10.0pt;">$user</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;"># con chiave testuale e
valore oggetto o variabile</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: maroon; font-family: "courier new"; font-size: 10.0pt;">$toMap</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">[</span></b><b><span style="background: white; color: maroon; font-family: "courier new"; font-size: 10.0pt;">$user</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">]=</span></b><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"prova"</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;"># con chiave oggetto o variabile e valore testuale</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Se l’indice era già presente all’interno della Hash Table, il
valore che viene indicato verrà sostituito, se invece non era presente, il
nuovo elemento verrà aggiunto.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<h1>
Come recuperare un valore da una HashTable in powershell<o:p></o:p></h1>
<div class="MsoNormal">
Ed ecco che, una volta inseriti i valori vogliamo
recuperarli… questo è semplicissimo e si può fare con <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="background: white; color: maroon; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">$toMap</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">[</span></b><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">"chiaveNuova"</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">]</span></b><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Ma ecco che c’è subito una casistica particolare e
interessante: se usiamo, come chiave, un oggetto, possiamo recuperare il valore
anche utilizzando un oggetto identico?<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Vi faccio un esempio: da una parte devo usare una hash per
immagazzinare determinati parametri di configurazione per un utente, quindi uso
l’utente come chiave e il valore sarà un’altra hash table.<o:p></o:p></div>
<div class="MsoNormal">
Giacché poi ciclo e recupero gli utenti, inserendoli in
variabile, posso recuperare i valori di configurazione precedentemente
immagazzinati?<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Ecco qui un’immagine che vi farà capire meglio cosa intendo:<o:p></o:p></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSt-SerQ1-HChYKLsgqRUlvQIqCZWpm50axmF8LzdKYN_ET8GXxjQ8mzD5gVHzpReI00RuFE_SC55r9LBoqoX7oRsjgi8XkjxT_WTFhUmXe-psJDfbP4BdBD-xhtRK3sK4a7nX5ZPVnYhY/s1600/VarInKeys.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="536" data-original-width="1211" height="282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSt-SerQ1-HChYKLsgqRUlvQIqCZWpm50axmF8LzdKYN_ET8GXxjQ8mzD5gVHzpReI00RuFE_SC55r9LBoqoX7oRsjgi8XkjxT_WTFhUmXe-psJDfbP4BdBD-xhtRK3sK4a7nX5ZPVnYhY/s640/VarInKeys.PNG" width="640" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
come vedete, purtroppo, le istanze degli oggetti ADUser non
sono IDENTICHE in tutto e per tutto, quindi non possiamo usare questo tipo di
oggetto per recuperare un valore da una chiave rappresentata da un’istanza di
ADUser dello stesso utente.<o:p></o:p></div>
<div class="MsoNormal">
Tuttavia, se gli oggetti sono IDENTICI, allora è possibile.
Guardate quest’immagine:<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8f4XOoWCSRt7HHA2xJRZHUllQuNgGOrhxpK6pv9BGrIFSV5N2vbMH8nj7k-F8DEJsOufXhHnOBkjC6QPfFpZxzgKNwADYxJWejzJO_OZBq0UgriP9C02pWpwNmqDPqS24ltVdm5CXkBjG/s1600/VarInKeys2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="536" data-original-width="1211" height="282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8f4XOoWCSRt7HHA2xJRZHUllQuNgGOrhxpK6pv9BGrIFSV5N2vbMH8nj7k-F8DEJsOufXhHnOBkjC6QPfFpZxzgKNwADYxJWejzJO_OZBq0UgriP9C02pWpwNmqDPqS24ltVdm5CXkBjG/s640/VarInKeys2.PNG" width="640" /></a></div>
<br />
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
… per oggi Finisco qui, dedicherò un approfondimento a
brevissimo su come si può ciclare su di un oggetto HashTable.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><span style="line-height: 107%;"><span style="font-size: x-large;">Happy
Scripting a Tutti!</span><span style="font-size: 14pt;"><o:p></o:p></span></span></b></div>
<br />Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-70543925428064778722019-02-08T19:28:00.000+01:002019-06-24T20:55:16.863+02:00Utilizzare una funzione definita in un file di Powershell<br />
<div class="MsoNormal">
<span style="font-size: x-large;"><b>B</b></span>uongiorno a tutti e benvenuti nuovamente nel mio blog!<o:p></o:p></div>
<div class="MsoNormal">
Capita spesso, in programmazione e così anche negli script,
di creare delle funzioni generiche che ci piacerebbe riutilizzare.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Nei linguaggi di scripting, tuttavia, non sempre è intuitivo
capire come “includere” le definizioni di funzioni: ogni linguaggio ha il suo “dialetto”…<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Ecco, in breve, come sfruttare questa buona pratica di programmazione,
il riutilizzo del codice, con powershell.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Supponiamo, ad esempio, di aver scritto questa funzione
dentro un file “FUNZIONI.ps1”:<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">function</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">
echoMyName</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="background: white; color: maroon; font-family: "courier new"; font-size: 10.0pt;">$user</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">){</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-tab-count: 1;"> </span></span><span style="background: white; color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">write-host</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"Ciao, $($user.Name), questo e' il tuo nome e
quest'altro e' il tuo ufficio: $($user.Office) "</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">}</span></b><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
… e di volerla riutilizzare per la nostra amministrazione
via powershell o in nuovi script, per riutilizzo del codice (ottima pratica).<o:p></o:p></div>
<div class="MsoNormal">
Quindi? Ecco qui di seguito alcuni trick per farlo:<o:p></o:p></div>
<h1>
Richiamare una function dal file da linea di comando shell<o:p></o:p></h1>
<div class="MsoNormal">
È presto fatto, basta ricordarsi una notazione un po’
particolare. Dobbiamo cominciare con una & e una parentesi graffa, dentro
quest’ultima un punto prima del percorso del file che contiene la funzione,
quindi il percorso, un punto e virgola (che separa il comando successivo) e<o:p></o:p></div>
<div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt "Times New Roman";">
</span></span></span><!--[endif]-->La & serve per indicare a powershell che
stiamo per eseguire un comando.<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt "Times New Roman";">
</span></span></span><!--[endif]-->La parentesi graffa serve per “racchiudere” i
comandi in un unico “set di comandi”.<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt "Times New Roman";">
</span></span></span><!--[endif]-->Il punto serve per indicare che vogliamo
“eseguire” il file PS1 (che conterrà solo definizioni di funzione, quindi non
avrà alcun output).<br />
Mi raccomando <b style="mso-bidi-font-weight: normal;">lo spazio tra il primo
punto</b> e il percorso del file<o:p></o:p></div>
<div class="MsoNormal">
Come di seguito:<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">&</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">{</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">
</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">.</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;"> “</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">.</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">\Funzioni</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">.</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">ps1”</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">;</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;"><span style="mso-spacerun: yes;"> </span></span><span style="background-color: white; font-family: "courier new"; font-size: 13.3333px;">echoMyName</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">((</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">get-aduser DiegoC</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">))}</span></b><b><span style="color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;"><o:p></o:p></span></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsDzyU4fJIctZvyfaUYQInOOca9WEj2WyCT-IgXWlrAz9ew4etlZGppKpcE-HN2ox9fkpgC5C6k7ouiWgpNYpcwLgKM01P3Z3NKHHk9kD02636aBtg5h4uej1rmDzstMadB8n6F1MHKru9/s1600/IncludeCommandLine.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="832" data-original-width="1491" height="356" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsDzyU4fJIctZvyfaUYQInOOca9WEj2WyCT-IgXWlrAz9ew4etlZGppKpcE-HN2ox9fkpgC5C6k7ouiWgpNYpcwLgKM01P3Z3NKHHk9kD02636aBtg5h4uej1rmDzstMadB8n6F1MHKru9/s640/IncludeCommandLine.PNG" width="640" /></a></div>
<br />
<h1>
Come usare una funzione powershell scritta in un file, su di un loop<o:p></o:p></h1>
<div class="MsoNormal">
Per utilizzare una funzione powershell da un file, però
sugli oggetti di un loop, magari i risultati in una collection derivanti da un comando
che <span style="mso-spacerun: yes;"> </span>abbiamo lanciato.<o:p></o:p></div>
<div class="MsoNormal">
Per farlo è sufficiente includere i comandi dentro le graffe
all’interno di quelle del foreach o del for, così:<o:p></o:p></div>
<div class="MsoNormal">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">get-Aduser </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">-</span></b><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">Filter</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">
“</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">*</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">” </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">|</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">
</span><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">foreach</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">{</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">
</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">.</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;"> “</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">.</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">\Funzioni</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">.</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">ps1”</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">;</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;"><span style="mso-spacerun: yes;"> </span></span><span style="background-color: white; font-family: "courier new"; font-size: 13.3333px;">echoMyName</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">($_</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">)</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">}</span></b><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz2NaiaQ3I3G6cmNZOK0uGEw7jpAqXyhJ29NaYrmUuuvEmXU2_HFR7BrqeMgp1J1XU5L2nwFKKvHGd5WjShlOdvkhyphenhyphen5Zg2f2Solus3Gbtzt-T1XSWLeYKr-xSLBgb0NGL49Ijw69F6yqOd/s1600/Loop_IncludeCommandLine.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="911" data-original-width="1166" height="500" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz2NaiaQ3I3G6cmNZOK0uGEw7jpAqXyhJ29NaYrmUuuvEmXU2_HFR7BrqeMgp1J1XU5L2nwFKKvHGd5WjShlOdvkhyphenhyphen5Zg2f2Solus3Gbtzt-T1XSWLeYKr-xSLBgb0NGL49Ijw69F6yqOd/s640/Loop_IncludeCommandLine.PNG" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a></div>
<div class="MsoNormal">
<br /></div>
<h1>
Come includere un file .ps1 che contiene delle funzioni<o:p></o:p></h1>
<div class="MsoNormal">
Per includere ed usare, in uno script powershell, delle
funzioni che avete definito in UN ALTRO file…<o:p></o:p></div>
<div class="MsoNormal">
È sufficiente usare questa notazione:<o:p></o:p></div>
<div class="MsoNormal">
<b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">. </span></b><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">".\FUNZIONI.ps1"</span><o:p></o:p></div>
<div class="MsoNormal">
Da quel momento in avanti potrete usare le funzioni che
avete scritto <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Bene, spero di aver solleticato anche oggi un po’ la vostra
fantasia… <o:p></o:p></div>
<div class="MsoNormal">
<span style="font-size: x-large;"><b>Happy Scripting a tutti!</b></span><o:p></o:p></div>
<br />Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-29916110422646584822019-01-30T22:49:00.002+01:002020-11-17T11:55:08.363+01:00Recuperare tutte le password delle reti WiFi memorizzate sul proprio computer<br />
<div class="MsoNormal">
<span style="font-size: x-large;">B</span>uongiorno a tutti e bentornati sul mio blog. Come va oggi? E' una bella giornata?</div>
<div class="MsoNormal"><br /></div><div class="MsoNormal">
<span style="color: #990000;"><b>DISCLAIMER: le tecniche di questo articolo presuppongono l'accesso shell ad un computer. Se non siete autorizzati a visualizzare i dati delle reti wireless (inclusa la password) a cui il computer si è connesso, non fatelo! Richiedete l'accesso a chi è autorizzato.<br />Questo articolo include tecniche legittime, previste dagli strumenti del sistema operativo Microsoft Windows, per recuperare le password di reti wireless memorizzate.</b></span></div><div class="MsoNormal"><span style="color: #990000;"><b>Questo articolo è al solo scopo educativo e non incoraggia in alcun modo alcuna attività non autorizzata o illegale.</b></span></div><div class="MsoNormal"><br /></div>
<div class="MsoNormal">
Ma veniamo a noi: ho promesso di mostrarvi quanto sia facile
<b style="mso-bidi-font-weight: normal;"><span style="font-size: large;">recuperare le password della wireless</span></b> di
un computer che ci capita sottomano (ovviamente devo dirvi che farlo su un
computer che non è il vostro e/o non essendo autorizzati NON E’ LEGALE. <span style="mso-spacerun: yes;"> </span>“Uomo avvisato…”).<o:p></o:p></div>
<h1>
Salvare la password del wifi su windows NON E’ SICURO, di per se’.<o:p></o:p></h1>
<div class="MsoNormal">
Dobbiamo proteggere l’accesso al nostro sitema, ed essere
certi che possiamo usarlo SOLO NOI e persone di cui ci fidiamo… …o almeno controllare
quello che fanno gli altri sul nostro sistema, con i nostri occhi e prestando
molta attenzione.<o:p></o:p></div>
<div class="MsoNormal">
A che cosa serve proteggere la vista dell’input della
password del wifi su Windows, se poi si recuperano con un semplice script? Serve
SOLO a impedire che chi sta guardando il nostro schermo veda quello che
digitiamo. Tuttavia ci suggerisce anche un falso senso di sicurezza…<o:p></o:p></div>
<div class="MsoNormal">
Forse molti di voi ancora pensano che non sia possibile <span style="font-size: large;"><b style="mso-bidi-font-weight: normal;">recuperare le password delle reti wireless</b>
</span>dal computer. Beh, vi sbagliate.<o:p></o:p></div>
<div class="MsoNormal">
Il processo non solo è possibile, ma anche <b style="mso-bidi-font-weight: normal;">in modo semplice</b> e <b style="mso-bidi-font-weight: normal;">senza autorizzazioni di amministratore</b>.<o:p></o:p></div>
<div class="MsoNormal">
Il trucco è compatibile con:<o:p></o:p></div>
<div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -18pt;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]-->Windows XP (non ricordo essattamente… qualcuno
ha a disposizione un PC su cui provare?)<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -18pt;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]-->Windows 7<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -18pt;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]-->Windows 8 e 8.1<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -18pt;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]-->Windows 10<o:p></o:p></div>
<div class="MsoNormal">
Quindi, anche <b style="mso-bidi-font-weight: normal;">non
essendo amministratore</b> del vostro PC, <span style="mso-spacerun: yes;"> </span>se questo accede alla rete wireless, potete
vederla tranquillamente (occhio alla legalità dell’operazione, vedi sopra).<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<h1>
Come vedere tutte le reti wireless a cui si è connesso il proprio PC.<o:p></o:p></h1>
<div class="MsoNormal">
Per elencare tutti i profili wifi memorizzati da un PC con
windows 10 è possibile semplicemente usare il comando: <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;">netsh wlan show profile<o:p></o:p></i></b></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;"><br /></i></b></div>
<div class="MsoNormal">
ed ecco comparirci una <b style="mso-bidi-font-weight: normal;">lista
di tutte le reti wireless a cui ci siamo connessi.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgR97-birLq4iO7fK__8ixGLbxpLOQzA5BVHTcBcV-VpOpRjmFzL31EYdxe0-I68G8qpeBg9-5hkX3NDDvyEKERGZrK7kkIWgU657h1lNXIbJyhxxFVC9iLLGu1vxVYQzCt8LyDDAEXE-cc/s1600/listaProfili.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="979" height="334" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgR97-birLq4iO7fK__8ixGLbxpLOQzA5BVHTcBcV-VpOpRjmFzL31EYdxe0-I68G8qpeBg9-5hkX3NDDvyEKERGZrK7kkIWgU657h1lNXIbJyhxxFVC9iLLGu1vxVYQzCt8LyDDAEXE-cc/s640/listaProfili.PNG" width="640" /></a></div>
<br />
<h1>
Come vedere i dettagli di connessione di una rete WiFi<o:p></o:p></h1>
<div class="MsoNormal">
Per vedere tutti i dettagli disponibili circa la rete
wireless a cui ci vogliamo connettere o che vogliamo scoprire, possiamo
lanciare lo stesso comando seguito dal nome della rete:<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;">netsh wlan show profile <nomeprofilo><o:p></o:p></nomeprofilo></i></b></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;"><br /></i></b></div>
<div class="MsoNormal">
ed ecco comparire una sequela di dettagli sulla
configurazione della rete e del nostro PC rispetto a quella rete. Ad esempio è
possibile vedere se il PC è impostato per connettervisi automaticamente o meno.<o:p></o:p></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO2ofNVQ_d-pf8vIn4BTbtts5CpSkH6VCkFYBogU4HNaTVGLItBKexmyleF93nw7YUFjFgdNXYNviHx_AbHrkYhG7OxwI6P9FXDoQOA31OVPq_1Iy5w83eyed-ZUkulD_rSn1ytSurp_jW/s1600/SingleProfile.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1040" data-original-width="979" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO2ofNVQ_d-pf8vIn4BTbtts5CpSkH6VCkFYBogU4HNaTVGLItBKexmyleF93nw7YUFjFgdNXYNviHx_AbHrkYhG7OxwI6P9FXDoQOA31OVPq_1Iy5w83eyed-ZUkulD_rSn1ytSurp_jW/s640/SingleProfile.PNG" width="602" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.rocketmarket.it" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a></div>
<div class="MsoNormal">
<br /></div>
<h1>
Come vedere in chiaro la password di una rete wifi (rimuovere gli
asterischi, in sostanza)<o:p></o:p></h1>
<div class="MsoNormal">
Per vedere senza asterischi la password salvata di quel
profilo, è sufficiente aggiungere un’opzione alla fine:<o:p></o:p></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;">key= clear<o:p></o:p></i></b></div>
<div class="MsoNormal">
ed ecco che il comando diventa:<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;">netsh wlan show profile <nomeprofilo> key= clear<o:p></o:p></nomeprofilo></i></b></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;"><br /></i></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJBXfs-C1y4CvlmUbjfmCeVsE7WGyQxUJIL7jOyZ2EPutu68p-fv_J5uM9HSTQEBrAIlc7kMlikIZJBJ038oWiLmh0HkPVAll7OoWs15eV8WGchqAsf_Xngd_vlWZrOjwrDtp5yr8Rd-xh/s1600/SingleProfilePWClear.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1040" data-original-width="979" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJBXfs-C1y4CvlmUbjfmCeVsE7WGyQxUJIL7jOyZ2EPutu68p-fv_J5uM9HSTQEBrAIlc7kMlikIZJBJ038oWiLmh0HkPVAll7OoWs15eV8WGchqAsf_Xngd_vlWZrOjwrDtp5yr8Rd-xh/s640/SingleProfilePWClear.PNG" width="602" /></a></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;"><br /></i></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
… e potevamo fermarci qui! Ma non sarebbe stato da veri “Scriptomani”.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<h1>
Come recuperare TUTTE le password di TUTTE le reti wireless a cui ci siamo
connessi<o:p></o:p></h1>
<div class="MsoNormal">
… anche una sola volta, anche molto tempo fa…. Il nostro PC
ha buona memoria!<o:p></o:p></div>
<div class="MsoNormal">
Ecco che, come al solito, ci vengono in aiuto i comandi di
sistema. In questo caso creiamo uno script che, semplice semplice, ci
restituisce <b style="mso-bidi-font-weight: normal;">un elenco completo di tutte
le reti wireless con le rispettive password</b>.<o:p></o:p></div>
<div class="MsoNormal">
Ma ecco qui lo script, in tutta la sua bellezza e semplicità:<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: magenta; font-family: "courier new"; font-size: 10pt;">@</span><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10pt;">echo</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;"> OFF<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10pt;">setlocal</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;">
EnableDelayedExpansion<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10pt;">FOR</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;"> /F
"usebackq delims</span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10pt;">=</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;">: tokens</span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10pt;">=</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;">2" </span><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10pt;">%%a</span></b><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10pt;"> IN</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;"> (`netsh wlan
show profiles`) </span><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10pt;">DO</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: #0080ff; font-family: "courier new"; font-size: 10pt;">(</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10pt;">set</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;"> nomeRet</span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10pt;">=</span></b><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10pt;">%%a</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10pt;">set</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;"> nomeRete</span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10pt;">=</span></b><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10pt;">!nomeRet:~1!</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: magenta; font-family: "courier new"; font-size: 10pt;">@</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;">netsh wlan show profiles name</span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10pt;">=</span></b><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10pt;">!nomeRete!</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;"> key</span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10pt;">=</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;">clear </span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10pt;">|</span></b><span style="background: white; color: #0080ff; font-family: "courier new"; font-size: 10pt;"> FINDSTR</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;">
/RI /C:"Nome[ ]</span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10pt;">*</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;">SSID" /C:"Contenuto[ ]</span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10pt;">*</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;">chiave"<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10pt;">echo</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;">.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #0080ff; font-family: "courier new"; font-size: 10pt;">)</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10pt; line-height: 107%;">Pause</span></b><b><span style="color: blue; font-family: "courier new"; font-size: 10pt; line-height: 107%;"><o:p></o:p></span></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Ed ecco l’output dello script, oscurato ovviamente nelle “zone
sensibili”:<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFTo8hFcYeKtI_eKqGyYzko-6U-sX4JqChEx0JcXvo4norX95KlSA3gX520_1fDkfmEefvouHlxiq3P9RoC0E6hpmMO-0rZFrTXbUzWDNlyIXXl35GCAgNVzTvwMWiSi8lRSTAw-jzzgjJ/s1600/Script.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="779" data-original-width="979" height="508" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFTo8hFcYeKtI_eKqGyYzko-6U-sX4JqChEx0JcXvo4norX95KlSA3gX520_1fDkfmEefvouHlxiq3P9RoC0E6hpmMO-0rZFrTXbUzWDNlyIXXl35GCAgNVzTvwMWiSi8lRSTAw-jzzgjJ/s640/Script.PNG" width="640" /></a></div>
<br />
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
BENE! Ed ecco che anche oggi abbiamo finito. Spero di aver
stuzzicato la vostra fantasia e di aver dimostrato, un’altra volta, che “lo
scripting scorre potente in Windows“ e che abbiamo a disposizione comandi per fare pressochè qualsiasi
cosa, senza disturbare i signori compilatori, Linux, superprogrammatori, etc,
etc…<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<o:p><br /></o:p></div>
<div class="MsoNormal">
Detto questo: <o:p></o:p></div>
<div class="MsoNormal">
<b><span style="font-size: large;">“usa lo script, Luke!”</span></b><o:p></o:p></div>
<div class="MsoNormal">
E<o:p></o:p></div>
<div class="MsoNormal">
<span style="font-size: large;"><b>Happy Scripting a tutti!</b></span><o:p></o:p></div>
<br />Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-33210349106193286462019-01-23T19:30:00.000+01:002019-06-24T20:56:23.868+02:00Eliminare le righe numero X da un file di testo - vbscript Buongiorno a tutti!<br />
<div>
<div class="MsoNormal">
Oggi, in questo brevissimo post, voglio condividere con voi uno
dei mitici script che ho creato nel mio “viaggio” come Sysadmin…<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Capita a volte di trovarsi a dover manipolare programmaticamente
dei file e di doverne analizzare e modificare di davvero ENORMI… <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
…a questo punto ecco entrare in gioco il mitico scripting,
che permette di programmare on-the-fly ed avere il risultato pronto, senza
bisogno di scomodare il signor compilatore… <span style="font-family: "segoe ui emoji" , sans-serif; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-char-type: symbol-ext; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-symbol-font-family: "Segoe UI Emoji";">😊</span><o:p></o:p></div>
<div class="MsoNormal">
<span style="font-family: "segoe ui emoji" , sans-serif; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-char-type: symbol-ext; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-symbol-font-family: "Segoe UI Emoji";"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: "segoe ui emoji" , sans-serif; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-char-type: symbol-ext; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-symbol-font-family: "Segoe UI Emoji";"><br /></span></div>
<div class="MsoNormal">
Con questo script è possibile eliminare, da un file di testo
MOOOOLTO grande, un elenco specifico di righe.</div>
<div class="MsoNormal">
In pratica mi avevano chiesto di ricevere un file ed un
elenco delle righe da eliminare e… bumble bumble magicabula … generare un file corretto…</div>
<div class="MsoNormal">
<o:p></o:p></div>
</div>
<div>
<br /></div>
<div>
ma ecco lo script, sperando che possa tornare utile a qualcun altro.</div>
<div>
<br /></div>
<div>
<style type="text/css">
span {
font-family: 'Courier New';
font-size: 10pt;
color: #000000;
}
.sc0 {
}
.sc1 {
color: #008000;
}
.sc2 {
font-weight: bold;
color: #FF0000;
}
.sc3 {
color: #0000FF;
}
.sc4 {
color: #808080;
}
.sc6 {
font-weight: bold;
}
.sc7 {
}
</style>
<br />
<div style="background: #FFFFFF; float: left; line-height: 1; white-space: pre;">
<span class="sc1">' Elimina le righe numero X da un file di testo. i numeri riga da eliminare li prende da un file di testo.
</span><span class="sc0">
</span><span class="sc3">const</span><span class="sc0"> </span><span class="sc7">ForReading</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc2">1</span><span class="sc0">
</span><span class="sc3">const</span><span class="sc0"> </span><span class="sc7">ForWriting</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc2">2</span><span class="sc0">
</span><span class="sc3">const</span><span class="sc0"> </span><span class="sc7">ForAppending</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc2">8</span><span class="sc0">
</span><span class="sc3">set</span><span class="sc0"> </span><span class="sc7">Dic</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc7">createObject</span><span class="sc6">(</span><span class="sc4">"Scripting.dictionary"</span><span class="sc6">)</span><span class="sc0">
</span><span class="sc3">Set</span><span class="sc0"> </span><span class="sc7">objFSO1</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc7">createObject</span><span class="sc6">(</span><span class="sc4">"Scripting.FilesystemObject"</span><span class="sc6">)</span><span class="sc0">
</span><span class="sc3">Set</span><span class="sc0"> </span><span class="sc7">objFSO2</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc7">createObject</span><span class="sc6">(</span><span class="sc4">"Scripting.FilesystemObject"</span><span class="sc6">)</span><span class="sc0">
</span><span class="sc3">Set</span><span class="sc0"> </span><span class="sc7">objFSO3</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc7">createObject</span><span class="sc6">(</span><span class="sc4">"Scripting.FilesystemObject"</span><span class="sc6">)</span><span class="sc0">
</span><span class="sc3">Set</span><span class="sc0"> </span><span class="sc7">myRegExp</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc3">New</span><span class="sc0"> </span><span class="sc7">RegExp</span><span class="sc0">
</span><span class="sc7">myRegExp.IgnoreCase</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc3">True</span><span class="sc0">
</span><span class="sc7">myRegExp.Global</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc3">True</span><span class="sc0">
</span><span class="sc7">myRegExp.Pattern</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc4">"regex"</span><span class="sc0">
</span><span class="sc7">percBase</span><span class="sc6">=</span><span class="sc4">"C:\Users\DiegoC\Desktop\TMP\2014-10-21_varie\ScriptAmministrazione\"</span><span class="sc0">
</span><span class="sc7">numFile</span><span class="sc6">=</span><span class="sc2">4</span><span class="sc0">
</span><span class="sc7">fileRighe</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc7">percBase</span><span class="sc0"> </span><span class="sc6">&</span><span class="sc0"> </span><span class="sc4">"errori file"</span><span class="sc0"> </span><span class="sc6">&</span><span class="sc0"> </span><span class="sc7">numFile</span><span class="sc0"> </span><span class="sc6">&</span><span class="sc0"> </span><span class="sc4">".csv"</span><span class="sc0">
</span><span class="sc7">fileOrigine</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc7">percBase</span><span class="sc0"> </span><span class="sc6">&</span><span class="sc0"> </span><span class="sc4">"contratti_"</span><span class="sc0"> </span><span class="sc6">&</span><span class="sc0"> </span><span class="sc7">numFile</span><span class="sc0"> </span><span class="sc6">&</span><span class="sc0"> </span><span class="sc4">".txt"</span><span class="sc0">
</span><span class="sc7">fileDestinazione</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc7">percBase</span><span class="sc0"> </span><span class="sc6">&</span><span class="sc0"> </span><span class="sc4">"contratti_pulito_"</span><span class="sc0"> </span><span class="sc6">&</span><span class="sc0"> </span><span class="sc7">numFile</span><span class="sc0"> </span><span class="sc6">&</span><span class="sc0"> </span><span class="sc4">".txt"</span><span class="sc0">
</span><span class="sc3">Set</span><span class="sc0"> </span><span class="sc7">objFileRighe</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc7">objFSO1.OpenTextFile</span><span class="sc6">(</span><span class="sc7">fileRighe</span><span class="sc6">,</span><span class="sc0"> </span><span class="sc7">ForReading</span><span class="sc6">)</span><span class="sc0">
</span><span class="sc3">Set</span><span class="sc0"> </span><span class="sc7">objFileOrigine</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc7">objFSO2.OpenTextFile</span><span class="sc6">(</span><span class="sc7">fileOrigine</span><span class="sc6">,</span><span class="sc0"> </span><span class="sc7">ForReading</span><span class="sc6">)</span><span class="sc0">
</span><span class="sc3">Set</span><span class="sc0"> </span><span class="sc7">objFileDestinazione</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc7">objFSO3.OpenTextFile</span><span class="sc6">(</span><span class="sc7">fileDestinazione</span><span class="sc6">,</span><span class="sc0"> </span><span class="sc7">ForAppending</span><span class="sc6">,</span><span class="sc0"> </span><span class="sc3">True</span><span class="sc6">)</span><span class="sc0">
</span><span class="sc1">' caccia i numeri riga da eliminare in un dictionary
'apri file di testo, e parsalo row-by-row nel dic. (includendo 1) perch� la riga 1 (la zero sarebbe) contiene le intestazioni
REM Dic.Add 0, ""
</span><span class="sc3">Do</span><span class="sc0"> </span><span class="sc3">Until</span><span class="sc0"> </span><span class="sc7">objFileRighe.AtEndOfStream</span><span class="sc0">
</span><span class="sc7">strLine</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc7">objFileRighe.ReadLine</span><span class="sc0">
</span><span class="sc7">strArr</span><span class="sc6">=</span><span class="sc7">split</span><span class="sc6">(</span><span class="sc7">strLine</span><span class="sc6">,</span><span class="sc0"> </span><span class="sc4">";"</span><span class="sc6">)</span><span class="sc0">
</span><span class="sc7">strRowToDel</span><span class="sc6">=</span><span class="sc3">CLng</span><span class="sc6">(</span><span class="sc7">strArr</span><span class="sc6">(</span><span class="sc2">2</span><span class="sc6">))</span><span class="sc0">
</span><span class="sc7">strRowToDel</span><span class="sc6">=</span><span class="sc7">strRowToDel</span><span class="sc6">-</span><span class="sc2">1</span><span class="sc0">
</span><span class="sc7">Dic.Add</span><span class="sc0"> </span><span class="sc7">strRowToDel</span><span class="sc6">,</span><span class="sc0"> </span><span class="sc4">""</span><span class="sc0">
</span><span class="sc1">REM wscript.echo " ciaociao " & strRowToDel
</span><span class="sc3">Loop</span><span class="sc0">
</span><span class="sc1">'apri il file di destinazione (un nuovo file di testo for append.
'apri il file di origine for reading.
</span><span class="sc7">i</span><span class="sc6">=</span><span class="sc2">0</span><span class="sc0">
</span><span class="sc3">Do</span><span class="sc0"> </span><span class="sc3">Until</span><span class="sc0"> </span><span class="sc7">objFileOrigine.AtEndOfStream</span><span class="sc0">
</span><span class="sc1">'row by row incrementa puntatore, se puntatore � in dictionary delle righe da eliminare, salta la riga, altrimenti appendila nel file di destinazione.
</span><span class="sc7">strLine</span><span class="sc0"> </span><span class="sc6">=</span><span class="sc0"> </span><span class="sc7">objFileOrigine.ReadLine</span><span class="sc0">
</span><span class="sc1">REM wscript.echo "riga " & i
</span><span class="sc3">if</span><span class="sc0"> </span><span class="sc7">Dic.Exists</span><span class="sc6">(</span><span class="sc7">i</span><span class="sc6">)</span><span class="sc0"> </span><span class="sc3">then</span><span class="sc0">
</span><span class="sc1">REM wscript.echo "byebye"
</span><span class="sc3">else</span><span class="sc0">
</span><span class="sc7">objFileDestinazione.WriteLine</span><span class="sc0"> </span><span class="sc7">strLine</span><span class="sc0">
</span><span class="sc3">end</span><span class="sc0"> </span><span class="sc3">if</span><span class="sc0">
</span><span class="sc7">i</span><span class="sc6">=</span><span class="sc7">i</span><span class="sc6">+</span><span class="sc2">1</span><span class="sc0">
</span><span class="sc3">Loop</span><span class="sc0">
</span><br />
<span class="sc0"><br /></span>
<span class="sc0"><br /></span>
<span class="sc0"><a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a></span><br />
<span class="sc0"><br /></span></div>
</div>
<div style="background: #FFFFFF; float: left; line-height: 1; white-space: pre;">
<span class="sc0"><br /></span></div>
<div style="background: #FFFFFF; float: left; line-height: 1; white-space: pre;">
<span class="sc0"><br /></span></div>
<div style="background: #FFFFFF; float: left; line-height: 1; white-space: pre;">
<span class="sc0">HAPPY SCRIPTING!</span></div>
Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-66566969892652490352019-01-22T19:30:00.000+01:002019-06-24T20:56:55.623+02:00Trovare i file in tutte le sottocartelle con il comando DIR (e filtrarli, se necessario) - episodio 2Buongiorno e benvenuti a questo secondo episodio della mini-serie dedicata al comando dir.<br />
Se non avete ancora letto il primo articolo, fatelo ora qui<br />
<br />
<a href="http://scriptomane.blogspot.com/2019/01/dir-avanzato-sottocartelle-1.html">http://scriptomane.blogspot.com/2019/01/dir-avanzato-sottocartelle-1.html</a><br />
<br />
<br />
<br />
Oggi procediamo con le presentazioni dei vari parametri più o meno sconosciuti di DIR e le loro funzionalità.<br />
<br />
Buona lettura!<br />
<br />
<h2>
Come ordinare i files/cartelle per …</h2>
Quindi prendiamo l’opzione del comando /O, per ordinare l’output in base ad un attributo. IN questo caso scegliamo la data di ultima modifica. Quindi:<br />
<br />
<h4>
Dir /S /B /OD</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJD0n_EEoswLeioxo-GuCDWaY9YH2ZF4KD1zvYyhrWjXiGhoxoJH_2hGkSWt66W-FkKrzSgBaCSG9CxWk7Ti6JHKYyvvAGCDryY5dJXMrrzYqGyMyu6muJAmv5ju-szjU2tew7BtzL0hXu/s1600/dir-s-b-od.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="550" data-original-width="964" height="364" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJD0n_EEoswLeioxo-GuCDWaY9YH2ZF4KD1zvYyhrWjXiGhoxoJH_2hGkSWt66W-FkKrzSgBaCSG9CxWk7Ti6JHKYyvvAGCDryY5dJXMrrzYqGyMyu6muJAmv5ju-szjU2tew7BtzL0hXu/s640/dir-s-b-od.PNG" width="640" /></a></div>
<br />
<br />
… e per ordinare dal più recente:<br />
<h4>
dir /S /B /O-D</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtVphTcv0__4VhnP2NZHYR3Fe9bFqNohM5W4s9n9Xe7m2RUXDAdB561PCHdQL2zgAMVxkwVhfTorLXPNccblyqlxDrKIh4mImd67NaFYG5iyhjsNcMvpaK82RcO0fnBkNtlf9f5g5W3fUF/s1600/dir-s-b-od_02.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="550" data-original-width="964" height="364" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtVphTcv0__4VhnP2NZHYR3Fe9bFqNohM5W4s9n9Xe7m2RUXDAdB561PCHdQL2zgAMVxkwVhfTorLXPNccblyqlxDrKIh4mImd67NaFYG5iyhjsNcMvpaK82RcO0fnBkNtlf9f5g5W3fUF/s640/dir-s-b-od_02.PNG" width="640" /></a></div>
<br />
<br />
Se vogliamo poi usare una data diversa da quella di ultima scrittura / modifica, possiamo usare l’ulteriore opzione /T, che determina QUALE data usare per l’ordinamento:<br />
<br />
•<span style="white-space: pre;"> </span>C Creazione<br />
•<span style="white-space: pre;"> </span>A Ultimo accesso<br />
•<span style="white-space: pre;"> </span>W Ultima scrittura<br />
<br />
<a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a><br />
<h2>
Come eseguire un comando su ogni file o cartella presente in tutte le sottodirectory</h2>
… e, per finire, un tema che, spero, stuzzicherà la vostra fantasia.<br />
<br />
Supponiamo di essere stati incaricati di appendere una riga di testo in tutti i files formato TXT contenuti in un albero di cartelle. Questa riga di testo dovrà separarsi dalle precedenti con una riga vuota e costituire il “footer” di tutte le comunicazioni antecedenti alla data odierna.<br />
Ed ecco che, con una riga di comando, senza neppure scomodare il file .bat …<br />
Siamo in grado di adempiere al nostro compito nel modo più efficace ed efficiente possibile:<br />
<br />
<h4>
FOR /F “usebackq delims=; tokens=*” %a IN (`DIR /A-D /S /B c:\interventi\test\*.txt`) DO (<br />Echo.>>%a<br />Echo --- footer - comunicazione antecedente alla data %date% --->>%a<br />)</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijUm0rIZgrZtvoKTjJipqvr5cNg-d9ZZ4rEwVbmU7YTnP_y14u7oMCpEpw9RQJiXtLkE6G6jLOh1rZyUXR_hgWqzRp927NlCYvrgx_o62laT406UgEUZhvsknYTE7zhEjiFR6pIwGRFEJT/s1600/for-dir-echo.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="550" data-original-width="964" height="364" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijUm0rIZgrZtvoKTjJipqvr5cNg-d9ZZ4rEwVbmU7YTnP_y14u7oMCpEpw9RQJiXtLkE6G6jLOh1rZyUXR_hgWqzRp927NlCYvrgx_o62laT406UgEUZhvsknYTE7zhEjiFR6pIwGRFEJT/s640/for-dir-echo.PNG" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhE1TGfK-A3q1VsD0aYE0_fwhKy6pSn6nMSBc1gfZbjGAfGL5FtrXZdE7zNOdqLMXuB01obYN4nBU4d-l8o9DkuGjaZxFkuLQAavfikSmdzmDCnnPLTAoreAOpxzLPmgqFuAO-CkE4Sh_5E/s1600/for-dir-echo_02.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="351" data-original-width="650" height="344" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhE1TGfK-A3q1VsD0aYE0_fwhKy6pSn6nMSBc1gfZbjGAfGL5FtrXZdE7zNOdqLMXuB01obYN4nBU4d-l8o9DkuGjaZxFkuLQAavfikSmdzmDCnnPLTAoreAOpxzLPmgqFuAO-CkE4Sh_5E/s640/for-dir-echo_02.PNG" width="640" /></a></div>
<br />
<br />
<br />
Come sempre, ricordatevi che, se lo volete inserire in un file batch, le %a devono diventare %%a<br />
<br />
… detto questo …<br />
<br />
<b><span style="font-size: x-large;">Happy Scripting a tutti!</span></b><br />
<div>
<br /></div>
Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-86633538946204176092019-01-21T15:10:00.003+01:002019-06-24T20:57:23.628+02:00Trovare i file in tutte le sottocartelle con il comando DIR (e filtrarli, se necessario) - episodio 1Buongiorno e benvenuti ad un altro episodio del mio blog, nel quale cerco di riportare in auge la potenza degli script e della command line per l’amministrazione e la gestione dei sistemi.<br />
<br />
<h2>
Oggi parliamo del comando DIR e delle sue potenzialità inespresse.</h2>
Può capitare infatti che ci venga richiesto di elencare solo determinati tipi di files in TUTTE LE SOTTODIRECTORY di un albero di cartelle.<br />
<br />
Che fare dunque? Andare ad aprirle tutte a mano? Ma certo che NO!<br />
<br />
<h2>
Premessa</h2>
Per seguire questo articolo è necessaria una minima conoscenza del comando DIR. Minima minima…<br />
… almeno averlo usato una volta nella vita…<br />
<br />
<h2>
Tutta la potenza di DIR</h2>
Vediamo insieme l’help di DIR, così da capire quali sono le moltissime potenzialità, spesso sconosciute, di questo comando di sistema, tra i più vecchi ed affidabili della storia dell’informatica.<br />
<br />
<span style="color: #274e13; font-size: x-small;">C:\Users\DiegoC>dir /?</span><br />
<span style="color: #274e13; font-size: x-small;">Mostra l'elenco dei file e delle sottodirectory in una directory.</span><br />
<span style="color: #274e13; font-size: x-small;"><br /></span>
<span style="color: #274e13; font-size: x-small;">DIR [unità:][percorso][nomefile] [/A[[:]attributi]] [/B] [/C] [/D] [/L] [/N]</span><br />
<span style="color: #274e13; font-size: x-small;"> [/O[[:]ordinamento]] [/P] [/Q] [/R] [/S] [/T[[:]campo data]] [/W] [/X] [/4]</span><br />
<span style="color: #274e13; font-size: x-small;"><br /></span>
<span style="color: #274e13; font-size: x-small;"> [unità:][percorso][nomefile]</span><br />
<span style="color: #274e13; font-size: x-small;"> Specifica unità, directory e/o file da elencare.</span><br />
<span style="color: #274e13; font-size: x-small;"><br /></span>
<span style="color: #274e13; font-size: x-small;"> /A Visualizza i file con gli attributi specificati.</span><br />
<span style="color: #274e13; font-size: x-small;"> attributi D Directory R File sola lettura</span><br />
<span style="color: #274e13; font-size: x-small;"> H File nascosti A File archivio</span><br />
<span style="color: #274e13; font-size: x-small;"> S File di sistema I File non indicizzati</span><br />
<span style="color: #274e13; font-size: x-small;"> L Reparse point - Prefisso per negare l'attributo</span><br />
<span style="color: #274e13; font-size: x-small;"> /B Utilizza lista file senza intestazione o informazioni di</span><br />
<span style="color: #274e13; font-size: x-small;"> riepilogo.</span><br />
<span style="color: #274e13; font-size: x-small;"> /C Visualizza il separatore delle migliaia nelle dimensioni dei</span><br />
<span style="color: #274e13; font-size: x-small;"> file. Impostazione predefinita. Utilizzare /-C per disabilitarla.</span><br />
<span style="color: #274e13; font-size: x-small;"> /D Come /W ma con i file ordinati per colonna.</span><br />
<span style="color: #274e13; font-size: x-small;"> /L Utilizza caratteri minuscoli.</span><br />
<span style="color: #274e13; font-size: x-small;"> /N Nuovo formato lungo, con nomi file a destra.</span><br />
<span style="color: #274e13; font-size: x-small;"> /O Elenca file ordinandoli.</span><br />
<span style="color: #274e13; font-size: x-small;"> ordinamento N Per nome, alfabetico S Per dimensione, dal minore</span><br />
<span style="color: #274e13; font-size: x-small;"> E Per estensione, alfabetico D Per data e ora dal più vecchio</span><br />
<span style="color: #274e13; font-size: x-small;"> G Mostra prima directory - Prefisso per invertire l'ordine</span><br />
<span style="color: #274e13; font-size: x-small;"> /P Mostra elenco una schermata per volta.</span><br />
<span style="color: #274e13; font-size: x-small;"> /Q Mostra il proprietario del file.</span><br />
<span style="color: #274e13; font-size: x-small;"> /R Visualizza flussi di dati alternativi del file.</span><br />
<span style="color: #274e13; font-size: x-small;"> /S Mostra file della directory e delle relative sottodirectory.</span><br />
<span style="color: #274e13; font-size: x-small;"> /T Controlla campo data visualizzato o utilizzato per ordinare.</span><br />
<span style="color: #274e13; font-size: x-small;"> campo data C Creazione</span><br />
<span style="color: #274e13; font-size: x-small;"> A Ultimo accesso</span><br />
<span style="color: #274e13; font-size: x-small;"> W Ultima scrittura</span><br />
<span style="color: #274e13; font-size: x-small;"> /W Visualizza in formato ampio.</span><br />
<span style="color: #274e13; font-size: x-small;"> /X Mostra i nomi brevi generati per i nomi con formato lungo.</span><br />
<span style="color: #274e13; font-size: x-small;"> Il formato è come quello di /N con nomi</span><br />
<span style="color: #274e13; font-size: x-small;"> abrevi prima del nome esteso. Se non ci sono nomi brevi</span><br />
<span style="color: #274e13; font-size: x-small;"> vengono visualizzati spazi bianchi.</span><br />
<span style="color: #274e13; font-size: x-small;"> /4 Mostra l'anno in formato 4 cifre</span><br />
<span style="color: #274e13; font-size: x-small;"><br /></span>
<span style="color: #274e13; font-size: x-small;">Le opzioni possono essere preimpostate nella variabile d'ambiente DIRCMD.</span><br />
<span style="color: #274e13; font-size: x-small;">Le opzioni preimpostate vengono annullate con un trattino, es./-W.</span><br />
<br />
<br />
<br />
Non mi soffermerò qui sui comandi più banali di DIR, perché, come detto, mi aspetto che almeno il minimo lo abbiate già fatto (dir *.*, dir c:\test\, dir /W, …) ma andrò direttamente al “succo” dei comandi + interessanti.<br />
<br />
<br />
<a href="https://www.rocketmarket.it" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a><br />
<h2>
/S e /B combinati: preparare l’output perché venga usato come input da un altro comando.</h2>
Come avete potuto apprezzare nell’help, il /S prevede che la ricerca non si fermi alla prima cartella / directory dell’albero, mentre il /B prevede che l’output sia un semplice elenco di file e cartelle, senza informazioni di intestazione etc… vediamo due esempi:<br />
<br />
<h4>
dir /S </h4>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1rE7V5hiFDZQ0bjwI8MI5qL0n30qpCa8US0Z7_UDkSW5G8wlQJKBYkxuLe5GuIVz2sLPr5vYVVyrgrXomqhzigcWXIEc6R61moeL6QZ4xk3CGUfbtKNkmaGf9MStYyu_JpK757DICOaTq/s1600/dir-s_01.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="724" data-original-width="964" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1rE7V5hiFDZQ0bjwI8MI5qL0n30qpCa8US0Z7_UDkSW5G8wlQJKBYkxuLe5GuIVz2sLPr5vYVVyrgrXomqhzigcWXIEc6R61moeL6QZ4xk3CGUfbtKNkmaGf9MStYyu_JpK757DICOaTq/s640/dir-s_01.PNG" width="640" /></a></div>
<br />
<br />
<h4>
dir /B </h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieSbgvA4IRQBv60lrMSYlbcez_y0E5_9Q9JfbW528N4IjyGq-BCUBJGpBcTgWcpY320t3g1Ep-G1Aub_TX_1Vt7DkkmuksW1w_x1bq2WKFAA-wuItpJ5tA1S5qBN7tRmJPHNETWNekD4TF/s1600/dir-b_01.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="724" data-original-width="964" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieSbgvA4IRQBv60lrMSYlbcez_y0E5_9Q9JfbW528N4IjyGq-BCUBJGpBcTgWcpY320t3g1Ep-G1Aub_TX_1Vt7DkkmuksW1w_x1bq2WKFAA-wuItpJ5tA1S5qBN7tRmJPHNETWNekD4TF/s640/dir-b_01.PNG" width="640" /></a></div>
<br />
<br />
Ma che succede se combiniamo queste due opzioni?<br />
<br />
La cosa mitica è che vedremo un elenco di files e cartelle, senza intestazioni o informazioni, con TUTTO IL LORO PERCORSO ASSOLUTO.<br />
Questo è fantastico se dobbiamo, ad esempio, eseguire un comando su ogni file di un certo tipo in tutte le sottocartelle (come vedremo + avanti nell’articolo)<br />
<br />
<h4>
Dir /S /B</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdP5-EQ2JHFdpa0C0QWYRekskaW42tbqTx48ABZaz5dfPYCtau9IkAT0vh7mXXogk-V6VyKsOQntafIpLXk28ghJFRhZ2TPjcneEKwjMFKfpXYqcrRqMHbvGlreyhRGtraW1qOr7gCVEUU/s1600/dir-s-b_01.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="724" data-original-width="964" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdP5-EQ2JHFdpa0C0QWYRekskaW42tbqTx48ABZaz5dfPYCtau9IkAT0vh7mXXogk-V6VyKsOQntafIpLXk28ghJFRhZ2TPjcneEKwjMFKfpXYqcrRqMHbvGlreyhRGtraW1qOr7gCVEUU/s640/dir-s-b_01.PNG" width="640" /></a></div>
<br />
<br />
<br />
<h2>
Come elencare solo le directory in tutte le sottocartelle</h2>
Come abbiamo visto nell’help, l’opzione del comando che filtra per determinati attributi è /A, combinata con una lettera che indica l’attributo, appunto, da cercare.<br />
Possiamo, ad esempio, cercare solo le CARTELLE:<br />
<br />
<h4>
dir /AD /S</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtbAZksPG3IVx4TtZFUMSu8DEh5xUTu9nEeRM67EKAj3Ev3JYbmB7M88MqTHhoVHa_KtzDneoKItT3K6XHUY3PnMRPWKxJ48VnvmUV-KoMp_LBc7Wvmia76lphyphenhyphenkqAcxMzdnMEnWJN7V3h/s1600/dir-ad-s_01.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="724" data-original-width="964" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtbAZksPG3IVx4TtZFUMSu8DEh5xUTu9nEeRM67EKAj3Ev3JYbmB7M88MqTHhoVHa_KtzDneoKItT3K6XHUY3PnMRPWKxJ48VnvmUV-KoMp_LBc7Wvmia76lphyphenhyphenkqAcxMzdnMEnWJN7V3h/s640/dir-ad-s_01.PNG" width="640" /></a></div>
<br />
<br />
… e se le vogliamo vedere tutte una dietro l’altra (come detto nel paragrafo precedente):<br />
<br />
<h4>
dir /AD /S /B</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwx5blxAG0ZCsipZL9zaYUqGR2_IlLD7B0YCJNYr2tzChjTpZzuP7QbGjsUtKM8rv3wM6Q0nRiiOsfWNZMbbll_jSdedF2qQ5FKTuzmhPBxhCTsVcec-bZ80KmsElg41fksqPFDYYbMHSN/s1600/dir-ad-s-b_01.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="724" data-original-width="964" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwx5blxAG0ZCsipZL9zaYUqGR2_IlLD7B0YCJNYr2tzChjTpZzuP7QbGjsUtKM8rv3wM6Q0nRiiOsfWNZMbbll_jSdedF2qQ5FKTuzmhPBxhCTsVcec-bZ80KmsElg41fksqPFDYYbMHSN/s640/dir-ad-s-b_01.PNG" width="640" /></a></div>
<br />
<h2>
Come trovare tutti i files nascosti </h2>
Ecco come, con il parametro del comando /A è possibile filtrare per altri attributi.<br />
Ho infatti assegnato al file C:\interventi\test\10000\10001\testTxtfile.txt gli attributi di NASCOSTO e SOLA LETTURA.<br />
<br />
E' possibile inoltre filtrare in modo NEGATIVO, escludendo i files e le cartelle con un determinato attributo, con la NEGAZIONE per mezzo del meno. Avremo che:<br />
<h4>
dir /A-DH /S /B </h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6SCJgQx7OaZrfyXGfu08AHCCXpS57xrcQkk5I7AqNdQeoR8B5wsa51UFtTcj60Y6SNEFi9z5GuVGytsIO58d_C4xK-tHyk93c2zf1t_twMocE9LyNonPwjeINPaTy17YjecFg6GJtRkgJ/s1600/dir-a-dh-s-b_01.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="550" data-original-width="964" height="364" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6SCJgQx7OaZrfyXGfu08AHCCXpS57xrcQkk5I7AqNdQeoR8B5wsa51UFtTcj60Y6SNEFi9z5GuVGytsIO58d_C4xK-tHyk93c2zf1t_twMocE9LyNonPwjeINPaTy17YjecFg6GJtRkgJ/s640/dir-a-dh-s-b_01.PNG" width="640" /></a></div>
<br />
<br />
significa: trova tutti i files che NON sono cartelle E che HANNO l'attributo nascosto (hidden - file nascosti)<br />
<h2>
Come elencare / listare solo i files di tipo … escludendo le cartelle</h2>
… xml, pdf, word, docx, excel, xlsx, … insomma: ci potete mettere quello che volete, alla fine dei 3 puntini…<br />
Di fatto vi basta aggiungere un *.<estensione> nell’opzione [nomefile] del comando, per filtrare / selezionare SOLO i file con una certa estensione in TUUUTTO l’albero delle cartelle.</estensione><br />
<br />
Ed ecco qui un paio di esempi:<br />
<h4>
dir /A-D /S /B C:\interventi\test\*.xlsx<br />dir /A-D /S /B C:\interventi\test\*.pup<br />dir /A-D /S /B C:\interventi\test\*.txt</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeXTJih3naoPZJipTEwy7x8i12zvhVRKBglntnEjC7tWbiU8upqEW8wWO_6kYwoNsU-qWIqjZYAZFCwWByon0llpyEW8q73IoauTFpE8UgcK6vB8XCR5REQW8FIUCt72Gcu2jXU2N__T91/s1600/dir-filter_by_extension.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="550" data-original-width="964" height="364" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeXTJih3naoPZJipTEwy7x8i12zvhVRKBglntnEjC7tWbiU8upqEW8wWO_6kYwoNsU-qWIqjZYAZFCwWByon0llpyEW8q73IoauTFpE8UgcK6vB8XCR5REQW8FIUCt72Gcu2jXU2N__T91/s640/dir-filter_by_extension.PNG" width="640" /></a></div>
<br />
<br />
Come avete visto, utilizzo il /A-D per escludere volontariamente le cartelle, perché le cartelle POSSONO contenere il punto nel nome… quindi ci possono essere dei falsi positivi e poi, hey: l’ho detto che parlavo solo dei comandi “avanzati”, giusto? 😊<br />
<br />
<br />
<br />
… per oggi abbiamo finito …<br />
<br />
Presto invierò il secondo articolo di questa mini-serie sul poderoso comando DIR. Nel frattempo:<br />
HAPPY SCRIPTING!<br />
<br />
<div>
<br /></div>
Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-12235539628568051852019-01-19T13:29:00.000+01:002019-06-24T20:57:59.314+02:00dsget, dsquery, dsadd, dsmod - strumenti sottovalutati se siete amministratori di rete - Quarta parte: dsmod<span style="background-color: white; color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif; font-size: 50px;">B</span><span style="background-color: white; color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif; font-size: 13.2px;">uongiorno a tutti, q</span><span style="background-color: white; color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif; font-size: 13.2px;">uesta è la "puntata conclusiva" di questa mini-serie su</span><span style="background-color: white; color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif; font-size: 13.2px;">i mitici strumenti batch per l'interazione con Active directory : dsquery, dsget, dsadd, dsmod. </span><br />
<span style="background-color: white; color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif; font-size: 13.2px;"><br /></span>
<br />
ecco l'elenco degli articoli di questa mini-serie:<br />
<br />
<a href="https://scriptomane.blogspot.com/2018/09/dsget-dsquery-dsadd-dsmod-strumenti.html" title="Prima parte">Prima parte</a><br />
<a href="https://scriptomane.blogspot.com/2018/09/dsget-dsquery-dsadd-dsmod-strumenti_24.html" title="Seconda parte">Seconda parte</a><br />
<a href="https://scriptomane.blogspot.com/2019/01/dsget-dsquery-dsadd-dsmod-strumenti.html" title="Terza parte">Terza parte</a><br />
<a href="https://scriptomane.blogspot.com/2019/01/dsget-dsquery-dsadd-dsmod-strumenti_19.html" title="Quarta parte">Quarta parte</a><br />
<span style="background-color: white; color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif; font-size: 13.2px;"></span>
<span style="background-color: white; color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif; font-size: 13.2px;"><br /></span>
<span style="background-color: white; color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif; font-size: 13.2px;"><br /></span>
<br />
<h3 style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; margin: 0px; position: relative;">
Oggi parliamo di DSMOD</h3>
<div>
Dsmod, come suggerito dal nome, serve per modificare oggetti di Active Directory dalla command-line.</div>
<div>
<br /></div>
<div>
Ecco quindi, per le vie brevi, cosa possiamo modificare con dsmod (dall'help del comando):</div>
<div>
<ul>
<li>dsmod computer - Modifica un computer esistente nella directory.</li>
<li>dsmod contact - Modifica un contatto esistente nella directory.</li>
<li>dsmod group - Modifica un gruppo esistente nella directory.</li>
<li>dsmod ou - Modifica un'unità organizzativa esistente nella directory.</li>
<li>dsmod server - Modifica un'istanza di controller di dominio Active Directory o di AD LDS esistente nella directory.</li>
<li>dsmod user - Modifica un utente esistente nella directory.</li>
<li>dsmod quota - Modifica una specifica di quota esistente nella directory.</li>
<li>dsmod partition - Modifica una specifica di partizione esistente nella directory.</li>
</ul>
<div>
<br /></div>
</div>
<div>
Come detto in precedenza, ogni comando ha un suo help contestuale a cui si può accedere con <b><i>dsmod <comando> -?</comando></i></b></div>
<div>
<br /></div>
<div>
... ecco a questo punto un paio di esempi:</div>
<div>
<br /></div>
<h2>
Modificare un utente active directory da command line:</h2>
<div>
Sono tante le caratteristiche di un oggetto utente in AD, molte delle quali si possono modificare con dsmod. Per un elenco completo di quello che è possibile cambiare, come sempre: <b><i>dsmod user -?</i></b></div>
<div>
<b><i><br /></i></b></div>
<div>
ecco dunque il nostro comando:</div>
<div>
<br /></div>
<div>
<b><i>dsmod user "CN=Dieguito C,OU=ZZZ_TEST,DC=miodominio,DC=local" -desc "prova2 di descrizione - modificata" -disabled yes</i></b></div>
<div>
<b><i><br /></i></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiZnLE4cbMVVwCRaTdIZri4FB3n8RYBL8wznMoNFeaKtrPaOajWlVoorSTfhqtaFIt5QBMCMH8J8dUo9nOQQb4oEZE5_H_MGgl15CjJyNJZfDZAjUb14lEv0leVi5Blejh209nJKO-6A1u/s1600/dsmod_user.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="1083" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiZnLE4cbMVVwCRaTdIZri4FB3n8RYBL8wznMoNFeaKtrPaOajWlVoorSTfhqtaFIt5QBMCMH8J8dUo9nOQQb4oEZE5_H_MGgl15CjJyNJZfDZAjUb14lEv0leVi5Blejh209nJKO-6A1u/s640/dsmod_user.PNG" width="640" /></a></div>
<div>
<b><i><br /></i></b></div>
<div>
ed ecco i risultati</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLfSuKt1koYZExVzy1Un86IfXtLwWzrj0r3xAtoUlpo9tN0Bi7Z3gR0klTJQAynN8h8Hm2ID4xBHKaZy9itJte0KZTsq_n0pTO9EVTSLGMwV7Lfp7uVDf94VcZEE5rMSD_8x9YeJBhJ9xj/s1600/dsmod_user+2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="128" data-original-width="341" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLfSuKt1koYZExVzy1Un86IfXtLwWzrj0r3xAtoUlpo9tN0Bi7Z3gR0klTJQAynN8h8Hm2ID4xBHKaZy9itJte0KZTsq_n0pTO9EVTSLGMwV7Lfp7uVDf94VcZEE5rMSD_8x9YeJBhJ9xj/s640/dsmod_user+2.PNG" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<h2>
Modifcare un gruppo di AD con uno script batch:</h2>
<div>
I gruppi sono oggetti un attimo meno complessi come numero di proprietà. Anche in questo caso, usate l'help per sapere quali potete cambiare con dsmod.</div>
<div>
<br /></div>
<div>
digitiamo quindi:</div>
<div>
<br /></div>
<div>
<b><i>dsmod group "CN=tst_DLsecGroup,OU=ZZZ_TEST,DC=miodominio,DC=local" -desc AAAAAA</i></b></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_-Bfp4U9IrNfNhZBSuePvEBAFJeNOY4plR7wEv6FX_0RcAwrZ_yO18cvRZRoVLhiLR7FDEGfldXwWQKKrfbWwna2aBYQ0YqkEhTs9eayhtJZHXLzONF_K6OWAY3zB3Wxw-X1NLRZ5y9Ig/s1600/dsmod_group.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="1083" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_-Bfp4U9IrNfNhZBSuePvEBAFJeNOY4plR7wEv6FX_0RcAwrZ_yO18cvRZRoVLhiLR7FDEGfldXwWQKKrfbWwna2aBYQ0YqkEhTs9eayhtJZHXLzONF_K6OWAY3zB3Wxw-X1NLRZ5y9Ig/s640/dsmod_group.PNG" width="640" /></a></div>
<div>
<br /></div>
<div>
ed otterremo:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYdxv0WphCzDE9dZ4c5QfeVbfdX5BoUTBCBpXSK2idlRj6GlcEkOxOvF46TVOKda0fxA8wECrNVEHPSNBa1XGb_FM5OQEKk4HMoe1p6T0TufzP8ChDwqoUIKFj2TXX6NLBwqZe_OguHTOz/s1600/dsmod_group_2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="133" data-original-width="769" height="110" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYdxv0WphCzDE9dZ4c5QfeVbfdX5BoUTBCBpXSK2idlRj6GlcEkOxOvF46TVOKda0fxA8wECrNVEHPSNBa1XGb_FM5OQEKk4HMoe1p6T0TufzP8ChDwqoUIKFj2TXX6NLBwqZe_OguHTOz/s640/dsmod_group_2.PNG" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<h2>
Rimuovere o aggiungere un utente ad un gruppo di Active directoy con dsmod da command line:</h2>
<div>
Tra le cose che si possono modificare di un gruppo di AD, c'è l'elenco membri. Utilizzando le opzioni: -addmbr | -rmmbr | -chmbr, possiamo modificare a piacimento l'elenco dei membri del gruppo.</div>
<div>
<br /></div>
<div>
ad esempio, se vogliamo rimuovere l'utente:</div>
<div>
<br /></div>
<div>
<b><i>dsmod group "CN=tst_DLsecGroup,OU=ZZZ_TEST,DC=miodominio,DC=local" -rmmbr "CN=Dieguito C,OU=ZZZ_TEST,DC=DASItalia,DC=local"</i></b></div>
<div>
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOBNB13gE7EyhqbZ015KdyXdUWHU7MuMB_2JbJEgL8yv8-nfU5uRMqL0zhkWAhRNwG3ImG-llLrsah1_bAuXVumjR3ta1fpsU0UgiNgUYSyo7PsCJoc9jsnNo_DmZeTlvcBs4fMpLkmJaj/s1600/dsmod_group_mem.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="1083" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOBNB13gE7EyhqbZ015KdyXdUWHU7MuMB_2JbJEgL8yv8-nfU5uRMqL0zhkWAhRNwG3ImG-llLrsah1_bAuXVumjR3ta1fpsU0UgiNgUYSyo7PsCJoc9jsnNo_DmZeTlvcBs4fMpLkmJaj/s640/dsmod_group_mem.PNG" width="640" /></a></div>
<div>
<br /></div>
<div>
ed otterremo il risultato</div>
<div>
<br /></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEz3sLaa9xuZwMfFleI2S23HV8Okm0SkzeQ6VBpahmkwrnqno6JAs7Iad6c4VutrpjfqUlgTp3cZ6BxLL60qRzbRKKOw-MYzIMtuOWyZOqpHnpXgQdFgG4eMVmQT6xgNCSJlp27lV4A_Ok/s1600/dsmod_group_mem2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="473" data-original-width="400" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEz3sLaa9xuZwMfFleI2S23HV8Okm0SkzeQ6VBpahmkwrnqno6JAs7Iad6c4VutrpjfqUlgTp3cZ6BxLL60qRzbRKKOw-MYzIMtuOWyZOqpHnpXgQdFgG4eMVmQT6xgNCSJlp27lV4A_Ok/s640/dsmod_group_mem2.PNG" width="540" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
FINE</div>
<div>
<br /></div>
<div>
Spero di aver solleticato la vostra creatività, scriptomani.</div>
<div>
<br /></div>
<div>
<b><span style="font-size: x-large;">Happy scripting!</span></b></div>
Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-66604955614025939122019-01-18T11:15:00.002+01:002019-06-24T20:58:33.097+02:00dsget, dsquery, dsadd, dsmod - strumenti sottovalutati se siete amministratori di rete - Terza parte: dsadd<span style="font-size: 50px;">B</span>uongiorno a tutti, oggi continuiamo a parlare dei mitici strumenti batch per l'interazione con Active directory services: dsquery, dsget, dsadd, dsmod.<br />
<br />
ecco l'elenco degli articoli di questa mini-serie:<br />
<br />
<a href="https://scriptomane.blogspot.com/2018/09/dsget-dsquery-dsadd-dsmod-strumenti.html" title="Prima parte">Prima parte</a><br />
<a href="https://scriptomane.blogspot.com/2018/09/dsget-dsquery-dsadd-dsmod-strumenti_24.html" title="Seconda parte">Seconda parte</a><br />
<a href="https://scriptomane.blogspot.com/2019/01/dsget-dsquery-dsadd-dsmod-strumenti.html" title="Terza parte">Terza parte</a><br />
<a href="https://scriptomane.blogspot.com/2019/01/dsget-dsquery-dsadd-dsmod-strumenti_19.html" title="Quarta parte">Quarta parte</a><br />
<h3>
Oggi parliamo di DSADD</h3>
<div>
Dsadd, come suggerito dal nome, è uno strumento per aggiungere oggetti ad Active Directory.</div>
<div>
Ecco, dall'output della guida del comando, cosa si può fare con dsadd.</div>
<div>
<br /></div>
<div>
<div>
dsadd computer - Aggiunge un computer alla directory.</div>
<div>
dsadd contact - Aggiunge un contatto alla directory.</div>
<div>
dsadd group - Aggiunge un gruppo alla directory.</div>
<div>
dsadd ou - Aggiunge un'unità organizzativa alla directory.</div>
<div>
dsadd user - Aggiunge un utente alla directory.</div>
<div>
dsadd quota - Aggiunge una specifica di quota a una partizione</div>
<div>
di directory.</div>
</div>
<div>
<br /></div>
<div>
In sintesi, per ogni "gusto" di dsadd si possono aggiungere ad Active Directory oggetti di una <b>determinata tipologia</b>.<br />
Per un elenco delle tipologie di oggetto che possono essere aggiunte, potete lanciare il comando seguito da <i><b>/?</b></i> o <i><b>-?</b></i> . Come ad esempio:<br />
<i><b>dsadd group -?</b></i><br />
<br />
Chiaramente, anche oggi, non andremo a sviscerare tutte le possibilità offerte dal coando, ma prenderemo ad esempio alcune situazioni comuni:<br />
<br />
<h2>
Premessa: il DistinguishedName</h2>
<div>
Se non avete ben chiaro cosa è il DN di un utente o, in generale, di un oggetto AD, beh, andate a vedervi il<a href="http://scriptomane.blogspot.com/2018/09/dsget-dsquery-dsadd-dsmod-strumenti.html" target="_blank"> primo articolo di questa serie,</a> poi tornate qui.</div>
<div>
<br /></div>
<div>
<br />
<a href="https://www.rocketmarket.it" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a></div>
<h2>
Aggiungere / Creare un utente Active Directory da batch:</h2>
<div>
Con dsadd è possibile creare utenti active directory da script e, contestualmente, impostare molte delle proprietà possibili dell'oggetto. In questo esempio vedremo come creare un nuovo utente specificando <b>nome, cognome, nome visualizzato, una descrizione, il telefono dell'ufficio</b> e, ovviamente, lo <b>username e la password</b>.</div>
<div>
<br /></div>
<div>
ecco qui:</div>
<div>
<b><i>dsadd user "CN=Dieguito C,OU=ZZZ_TEST,DC=miodominio,DC=estensione"-fn Diego -ln Castelli -display "Castelli Diego TEST" -desc "Utente di test - da cancellare" -samid DieguitoC -hometel "+39123456789" -pwd "PasswordDiProva..12345"</i></b></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMNzUpuqGDdTFkenJmLEaL59O_N1H3o-awDCiIqNWcuY4o52ajUmbFrOG7_0fZCGpdX-GfwTL3FPOUZ9hTsq4XM1QaXeq7mJOAgKtCoHCgMsXDpGEzWTAqPn4u7smXLN_abzK0aFSfrly4/s1600/dsadd_user.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="520" data-original-width="982" height="337" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMNzUpuqGDdTFkenJmLEaL59O_N1H3o-awDCiIqNWcuY4o52ajUmbFrOG7_0fZCGpdX-GfwTL3FPOUZ9hTsq4XM1QaXeq7mJOAgKtCoHCgMsXDpGEzWTAqPn4u7smXLN_abzK0aFSfrly4/s640/dsadd_user.PNG" width="640" /></a></div>
<br />
<br />
... ed ecco il nostro risultato comparire nella OU zzz_test, come specificato.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-ig2SiUTR6g25cjmw5eaMsNwDA6qgQS6DmOva4I4ukcZIBlQyZjkZkhezOY6jZLgVC_ueqyhH_UH4706VhKm2scXdSGN2B1t1l1kj-ExSAhTfQo50jpARuKNsCxtEwLIX_2G9WRqJ6GKU/s1600/dsadd_user_2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="58" data-original-width="892" height="41" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-ig2SiUTR6g25cjmw5eaMsNwDA6qgQS6DmOva4I4ukcZIBlQyZjkZkhezOY6jZLgVC_ueqyhH_UH4706VhKm2scXdSGN2B1t1l1kj-ExSAhTfQo50jpARuKNsCxtEwLIX_2G9WRqJ6GKU/s640/dsadd_user_2.PNG" width="640" /></a></div>
<br />
<br />
<h2>
Aggiungere / Creare un gruppo Active Directory con uno script:</h2>
<div>
Con dsadd possiamo aggiungere anche gruppi, sempre specificando molte delle loro caratteristiche. Qui creiamo un gruppo, sempre nella nostra OU di test, definendo che è un gruppo di sicurezza, che ha scopo locale al dominio e la sua descrizione.</div>
<div>
<br /></div>
<div>
Come si può notare dal contenuto della guida <i style="font-weight: bold;">dsadd group -? </i>è possibile anche <b>aggiungere membri al gruppo mentre lo si sta creando</b>. E noi, in questo esempio, aggiungeremo ANCHE il nostro utente appena creato al gruppo.</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
ecco il comando:</div>
<div>
<div>
<b><i>dsadd group "CN=tst_DLsecGroup,OU=ZZZ_TEST,DC=miodominio,DC=local" -secgrp yes -scope l -desc "gruppo di sicurezza di test - da cancellare" -members "CN=Dieguito C,OU=ZZZ_TEST,DC=miodominio,DC=local"</i></b></div>
<div>
<b><i>dsadd operazione riuscita:CN=tst_DLsecGroup,OU=ZZZ_TEST,DC=miodominio,DC=local</i></b></div>
</div>
<div>
<b><i><br /></i></b></div>
<div>
<b><i><br /></i></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAzBVWT6rOPKUE4T_rviAK1JQpECqwkRyKbex2fCCVqW4XtZE9saK5bOoKN8UnHpcsCHrjiRVZVZLNyPAjPwlCdjVPq2c5HWNZhMh5H42FtKrc2E2A7pM5kg69IMLmeBHVoDm8sssDyDka/s1600/dsadd_group.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="1083" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAzBVWT6rOPKUE4T_rviAK1JQpECqwkRyKbex2fCCVqW4XtZE9saK5bOoKN8UnHpcsCHrjiRVZVZLNyPAjPwlCdjVPq2c5HWNZhMh5H42FtKrc2E2A7pM5kg69IMLmeBHVoDm8sssDyDka/s640/dsadd_group.PNG" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
...ed ecco il nostro risultato comparire bello e pronto nella nostra OU:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-KEAy3rSHJj9-uesRYDhI6uPrffdoYD1fc47JglHmFNCqETdUisIrr7HQ3tfBm3O6a9luIuTiLG004QbcBLERAPB5FS4WSsI4fkcslqFc3HGuYE0LCUwou8WmxwUZ8PIuUMNyh82wQfSy/s1600/dsadd_group_2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="596" data-original-width="610" height="624" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-KEAy3rSHJj9-uesRYDhI6uPrffdoYD1fc47JglHmFNCqETdUisIrr7HQ3tfBm3O6a9luIuTiLG004QbcBLERAPB5FS4WSsI4fkcslqFc3HGuYE0LCUwou8WmxwUZ8PIuUMNyh82wQfSy/s640/dsadd_group_2.PNG" width="640" /></a></div>
<h2>
</h2>
<h2>
Aggiungere / Creare una OU Active Directory con un .bat:</h2>
</div>
<div>
ed eccoci arrivati all'ultimo esempio che ho intenzione di trattare: inserire una OU, una organizational unit (o unità organizzativa) in active directory, usando solo "la forza" del nostro amato linguaggio di scripting...</div>
<div>
<br /></div>
<div>
a differenza degli altri esempi, le propietà che possono essere impostate già durante la creazione dell'oggetto OU sono ... UNA SOLA. Infatti una OU non ha molte proprietà e possiamo impostare, oltre ovviamente al suo percorso, solo una descrizione.</div>
<div>
<br /></div>
<div>
ed ecco qui il comando:</div>
<div>
<b><i>dsadd ou "OU=TEST-subOU,OU=ZZZ_TEST,DC=DASItalia,DC=local" -desc "descrizione della OU"</i></b></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_1ny9EfxThDOb-Nl4DS0XrBjNilVE4bRJuxDxiKeZglwfXbJdpziYiXWU-_LHLO2_tuBxBJp77ihjI_SA1dNUTcWtrJF-e0Ck1-mu39nRtw-Y3WfCZl0KfY-lOq1UKEDLb3bXowAcRYr3/s1600/dsadd_ou.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="1083" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_1ny9EfxThDOb-Nl4DS0XrBjNilVE4bRJuxDxiKeZglwfXbJdpziYiXWU-_LHLO2_tuBxBJp77ihjI_SA1dNUTcWtrJF-e0Ck1-mu39nRtw-Y3WfCZl0KfY-lOq1UKEDLb3bXowAcRYr3/s640/dsadd_ou.PNG" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOtTUQJdwE_uncE5SJoKdN2S7h9fxCM2YmOeuhaeG9cfxV-qcvvC5JdCQxu6SwwvlvoiuOkdCfbE1X5B0QMtso3t9JZXL5wlUY0tnyOgr0hxrzSVPVgtCfckF0fJpbpDxPNNWbfBO15eIz/s1600/dsadd_ou_2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="161" data-original-width="501" height="204" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOtTUQJdwE_uncE5SJoKdN2S7h9fxCM2YmOeuhaeG9cfxV-qcvvC5JdCQxu6SwwvlvoiuOkdCfbE1X5B0QMtso3t9JZXL5wlUY0tnyOgr0hxrzSVPVgtCfckF0fJpbpDxPNNWbfBO15eIz/s640/dsadd_ou_2.PNG" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<div>
bene, spero di avervi fatto venire voglia di creare mille script per automatizzare tutti gli aspetti di gestione utenze...</div>
<div>
<br /></div>
<div>
<b><span style="font-size: x-large;">Happy Scripting!</span></b></div>
</div>
Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-29248791929325949042019-01-14T19:01:00.000+01:002019-06-24T20:59:13.593+02:00Android e WiFi: tutte le soluzioni (ovvero: perché Android non vede una rete wifi)<div class="MsoNormal">
<span style="font-size: 50px;">D</span>a tempo vi state arrovellando il cervello per capire perché
il vostro smartphone android ...<br />
<h2>
... non vede la rete wireless? </h2>
<o:p></o:p><br />
<br /></div>
<div class="MsoNormal">
Beh, tenetevi forte perché adesso vedremo una carrellata di
possibili motivazioni e, per ciascuna, la soluzione.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Capita talvolta che il nostro amato cellulare “intelligente”
non sembri poi così “smart”. Soprattutto quando siamo gli unici in mezzo ad
altri che<b> non riescono a navigare con la wi-fi </b>ospiti nella hall di un albergo oppure
di un ristorante.<o:p></o:p><br />
<br /></div>
<div class="MsoNormal">
Tra le mura domestiche, poi, se il nostro android “jelly
bean”, “kitkat” o “Lollipop” <b>non prende nemmeno la rete wireless di casa</b>… … ci
arrabbiamo talmente tanto che ci verrebbe voglia di lanciarlo fuori dalla
finestra e sostituirlo subito con un nuovissimo dispositivo Android “Pie” o, al
più , “Oreo” (e forse questo ci da anche la “scusa” per farlo).<o:p></o:p><br />
<br /></div>
<div class="MsoNormal">
Ma che fare se, anche sostituendo il device, questo <b>non
prende la wifi</b>?<o:p></o:p><br />
<br /></div>
<div class="MsoNormal">
Oppure ancora, che fare se proprio non vogliamo abbandonare
il nostro smartphone, sia esso aggiornato a “Nougat”, “Marshmallow” o ancora a “KitKat”?<span style="mso-tab-count: 1;"> </span><o:p></o:p></div>
<div class="MsoNormal">
<br />
Vediamo di seguito una carrellata su molte delle cause più
comuni di questa disfunzione e come risolvere in ciascuna situazione.<o:p></o:p></div>
<div class="MsoNormal">
<br />
<b><br /></b>
<b>DISCLAIMER:</b><br />
Prima di tutto, mettiamo in chiaro una cosa: se decidi di seguire queste procedure, lo fai a tuo rischio e pericolo. Soprattutto quelle “rischiose”, che coinvolgono la modifica di qualsiasi cosa a livello non standard. Se qualcosa non funziona o si rompe, non venire da me.<br />
<div>
<br /></div>
<br /></div>
<h2>
Problema 1: ci si sta provando a connettere a una rete 5GHz, avendo
attivato solo la banda 2.4 GHz, o vice-versa.<o:p></o:p></h2>
<div class="MsoNormal">
Non so se lo sapete, ma il segnale WiFi può attestarsi su
due “macro-bande” di frequenza: 2.4 GHz e 5 GHz.<o:p></o:p></div>
<div class="MsoNormal">
I telefoni moderni ed i computer, hanno tutti una scheda che
permette di funzionare ad entrambe le frequenze. Tuttavia, in android, esiste
una impostazione che permette di selezionare se attivare la compatibilità con
una sola o entrambe le frequenze.<o:p></o:p></div>
<h3>
Soluzione: verificare che l’impostazione permetta la banda della rete WiFi a
cui ci vogliamo connettere<o:p></o:p></h3>
<div class="MsoNormal">
Recarsi su impostazioni->Wireless e reti->Wi-Fi poi
cliccare sul tasto menu (i tre puntini) e scegliere avanzate. Quindi selezionare
Banda di Frequenza Wi-Fi e scegliere “Automatica”, nel caso in cui si voglia
consentire al telefono di usare reti wireless sia a 2.4 GHz che a 5 GHz. <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrtc0YBU_Q449REFATR4fgIQNMSzUYFtknkFLtVTLC0R-Sftb2mrLwDR73VF1XFN0S04iQ19vSLM7k2iwgrQj6VpECMDFGTukva2-o2bhHupIrW75IQJsY65WSyknJngqk3OrOIowpTaNb/s1600/Screenshot_2019-01-14-18-52-43.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrtc0YBU_Q449REFATR4fgIQNMSzUYFtknkFLtVTLC0R-Sftb2mrLwDR73VF1XFN0S04iQ19vSLM7k2iwgrQj6VpECMDFGTukva2-o2bhHupIrW75IQJsY65WSyknJngqk3OrOIowpTaNb/s320/Screenshot_2019-01-14-18-52-43.png" width="180" /></a></div>
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<h2>
Problema 2: è attiva l’impostazione “Evita connessioni deboli”<o:p></o:p></h2>
<div class="MsoNormal">
Se invece la rete wireless la vedete, ma non riuscite a
rimanere connessi, può darsi che sia attiva l’impostazione “Evita connessioni
deboli”. Questa opzione permette di switchare indietro all’uso della connessione
cellulare, nel caso la connessione ad internet della wifi fosse lenta o
instabile. In pratica il telefono “verifica la qualità” della connessione.<o:p></o:p><br />
<br />
<a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a></div>
<h3>
Soluzione: disattivare l’opzione<o:p></o:p></h3>
<div class="MsoNormal">
Per disattivare questa opzione recarsi su impostazioni->Wireless
e reti->Wi-Fi poi cliccare sul tasto menu (i tre puntini) e scegliere
avanzate. Infine togliere la spunta a “Evita connessioni deboli”.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdt7qb1k3xmRWVkNvXtj0jpAxBb-GYP5x9b9uJK1NKn_TbgH4oq-iqSWMBSFYZN0ebbShecbiu8AZKPzX7Y6p4ciuWN-besO-ghJTYfXI9lXwYwNaEXfEduesy2L8zHUW08Yf1FW8NlC-y/s1600/Screenshot_2019-01-14-17-04-16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdt7qb1k3xmRWVkNvXtj0jpAxBb-GYP5x9b9uJK1NKn_TbgH4oq-iqSWMBSFYZN0ebbShecbiu8AZKPzX7Y6p4ciuWN-besO-ghJTYfXI9lXwYwNaEXfEduesy2L8zHUW08Yf1FW8NlC-y/s320/Screenshot_2019-01-14-17-04-16.png" width="180" /></a></div>
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<h2>
Problema 3: su Android è impostato male il “regulatory domain” o il canale
(Channel) del Wi-Fi<o:p></o:p></h2>
<div class="MsoNormal">
Il Regulatory Domain è uno spettro di frequenze utilizzabili
dal wifi che, per convenzione internazionale, cambia da paese a paese. In
sintesi, la wi-fi negli Stati Uniti potrebbe usare frequenze diverse da quelle usate
in Italia ed ANCHE potenze di trasmissione massime diverse.<o:p></o:p></div>
<div class="MsoNormal">
<br />
Se volete approfondire:<o:p></o:p></div>
<div class="MsoNormal">
<a href="https://en.wikipedia.org/wiki/IEEE_802.11#Regulatory_domains_and_legal_compliance">https://en.wikipedia.org/wiki/IEEE_802.11#Regulatory_domains_and_legal_compliance</a><o:p></o:p></div>
<div class="MsoNormal">
<a href="https://web.archive.org/web/20131230232954/http:/networks.rice.edu/papers/FINAL_article_80211af.pdf">https://web.archive.org/web/20131230232954/http://networks.rice.edu/papers/FINAL_article_80211af.pdf</a><o:p></o:p><br />
<br /></div>
<div class="MsoNormal">
Se su android avete impostato un regdomain diverso da quello
della nazione in cui siete (magari avete inavvertitamente modificato qualcosa o
un amico smanettone ha deciso di farvi uno scherzo), il vostro telefono potrebbe
non rilevare la rete o non connettersi correttamente.<o:p></o:p></div>
<div class="MsoNormal">
Il canale e la “region” del wireless, in android, vengono
teoricamente assegnati dalla SIM (si, dalla SIM), in quanto riconosce il paese
in cui si sta utilizzando il dispositivo. Tuttavia talvolta questo meccanismo può
non funzionare in modo perfetto… <o:p></o:p></div>
<div class="MsoNormal">
Ecco quindi alcune possibili soluzioni.<o:p></o:p></div>
<h3>
Soluzione 1: attivare la geolocalizzazione e riavviare<o:p></o:p></h3>
<div class="MsoNormal">
Attivando la geolocalizzazione, c’è la possibilità che il telefono
“capisca” da solo dove si trova e quale canale/frequenza deve utilizzare con il
WiFi.<o:p></o:p></div>
<h3>
Soluzione 2: cambiare il canale e/o il regulator domain sul router.<o:p></o:p></h3>
<div class="MsoNormal">
É più avveduto, se non si sa esattamente quello che si sta
facendo, cercare di cambiare il canale sul router, che potrebbe avere impostato
un canale fuori dal range accettabile per lo smartphone (si dice che alcuni
cellulari avessero problemi con i canali superiori a 11).<o:p></o:p></div>
<div class="MsoNormal">
<br />
Per fare ciò, è necessario consultare il manuale del vostro
router, perché non tutti i router sono uguali e le istruzioni cambiano troppo
significativamente da modello a modello.<o:p></o:p></div>
<h3>
Soluzione 3: modificare il canale wifi di android (sconsigliato)<o:p></o:p></h3>
<div class="MsoNormal">
In generale, se non sai esattamente cosa stai facendo, ti
sconsiglio di proseguire per questa strada. Tuttavia, se proprio non riesci in
altro modo a connetterti alla rete e questo sta pregiudicando una parte
importante della tua giornata, ecco una soluzione un po’ drastica ma efficace:<o:p></o:p></div>
<div class="MsoNormal">
Un membro della nota community xda-developers ha sviluppato
una utility che si chiama “WiFi Codes”.<o:p></o:p></div>
<div class="MsoNormal">
Questa utility è in grado di accedere alle configurazioni del
wifi del telefono android e cambiare il regulatory domain.<o:p></o:p></div>
<div class="MsoNormal">
Ecco il link (in inglese) alla pagina del progetto sulla
community, con tutte le istruzioni.<o:p></o:p></div>
<span style="font-family: "calibri" , sans-serif; font-size: 11.0pt; line-height: 107%;"><br clear="all" style="mso-special-character: line-break; page-break-before: always;" />
</span>
<br />
<div style="border-bottom: double windowtext 6.75pt; border: none; mso-border-bottom-alt: thin-thick-thin-medium-gap windowtext 6.75pt; mso-element: para-border-div; padding: 0cm 0cm 1.0pt 0cm;">
<div class="MsoNormal" style="border: none; mso-border-bottom-alt: thin-thick-thin-medium-gap windowtext 6.75pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm; padding: 0cm;">
<br />
<br />
<h2>
Problema 4: la rete a cui ci si vuole connettere è una rete ad-hoc e si
dispone di uno smartphone Android che non supporta le reti ad-hoc<o:p></o:p></h2>
<div class="MsoNormal">
Se la rete a cui stiamo tentando di connetterci è una rete
ad-hoc, dovete sapere che Android non supporta ufficialmente questo tipo di
connessioni. Ci sono varie notizie sul fatto che con le ultime versioni di
android questo ostacolo sia finalmente scomparso, tuttavia il problema rimane
per le versioni precedenti.<o:p></o:p></div>
<h3>
Soluzione: modificare il wpa_supplicant con i permessi di root<o:p></o:p></h3>
<div class="MsoNormal">
Molto tempo fa ho scritto un articolo su come abilitare le
reti ad-hoc su android, addirittura direttamente sul dispositivo, senza utilizzare
il PC… Ecco il link<o:p></o:p></div>
<div class="MsoNormal">
<a href="https://scriptomane.blogspot.com/2012/08/abilitare-le-reti-ad-hoc-su-android.html">https://scriptomane.blogspot.com/2012/08/abilitare-le-reti-ad-hoc-su-android.html</a>
<o:p></o:p></div>
<br />
<div class="MsoNormal">
In sostanza si deve trovare e scaricare (magari da una fonte
sicura, come <a href="https://www.xda-developers.com/">xda_developers</a>) una
versione modificata del wpa_supplicant per il proprio dispositivo e versione
android e sostituirlo a quello originale (mi raccomando fare il backup),
utilizzando i permessi di ROOT.<o:p></o:p></div>
<br />
<br />
<br />
<br />
Ecco, in questo articolo vi ho dato una carrellata dei problemi secondo me più comuni e della loro soluzione, quando android non si connette ad una rete WiFi.<br />
<br />
<br />
<br />
Spero di essere stato utile a qualcuno e, in ogni caso, happy scripting a tutti!</div>
</div>
Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-82285781764369534382018-12-20T07:30:00.000+01:002019-06-24T20:59:40.335+02:00Emulazione di tastiera ITALIANA per arduino - episodio 1 - Lo Scriptomane<span style="color: #666666;"><br /></span>
<br />
<div align="center" style="text-align: center;">
<span style="color: #666666;">(per i processori
ATMEL che supportano USB nativamente)</span><o:p></o:p></div>
<br />
<br />
<span style="font-size: 50px;">B</span>uongiorno a tutti!<br />
Questo è il mio primo post su Arduino, spero vi sia utile.<br />
Oggi vedremo come sia possibile emulare una tastiera con Arduino. Inoltre, con un po' di nazionalismo, vedremo come "rientrare" nelle tastiere supportate dalla libreria, dato che la keyboard language localization della libreria integrata nell'arduino IDE è SOLO AMERICANA.<br />
<br />
<h2>
Arduino è grande e mitico</h2>
Per prima cosa bisogna dire che Arduino, il progetto open hardware tutto italiano che ha avuto un successo mondiale, permette di prototipare rapidamente progetti di elettronica e costruire… …beh praticamente qualsiasi cosa vogliate (se avete tempo e budget infiniti, ovvio).<br />
Essendo io appassionato di informatica, ovviamente ho cominciato subito a pensare ad interfacciarlo con il PC e dopo un bel po’ ecco la prima applicazione pratica (nel campo della cybersecurity e, nello specifico, nel penetration testing).<br />
<br />
<h2>
La USB Rubber Ducky</h2>
Un'altra premessa da fare: la rubber ducky è un famoso (nel campo della cybersecurity) strumento dell’altrettanto famoso (nel medesimo campo) show di YouTube: Hak5.<br />
In sostanza si tratta di un piccolo dispositivo per Keystroke Injection Attacks (debuttati in grande proprio con la sua invenzione): emula una tastiera e comincia a lanciare comandi "alla massima velocità".<br />
L’emulazione di tastiera e/o di altri dispositivi di input “HID” (Human Interface Device) apre le porte a tutta una serie di possibilità circa gli attacchi fisici perpetrabili in regime di penetration testing “red team”.<br />
Come può un computer ritenere dannosi i comandi che il suo stesso utente inserisce dalla tastiera?...<br />
<br />
Insomma: un tool spaziale, in particolar modo per chi, come me, si intende di scripting.<br />
<b>VOLEVO AVERLO.</b><br />
<b><br /></b>
Se non altro per "evangelizzare" i miei utenti e conoscenti circa la buona pratica di bloccare il pc prima di allontanarsene... ... quando si è in ufficio o in un luogo a cui hanno accesso altre persone, ovviamente... Quando siamo a casa in pantofole e andiamo a farci il caffè NON SERVE!<br />
<br />
Non siamo paranoici; solo "quasi paranoici". :-)<br />
<br />
<h4>
Ecco, però, c'erano dei “piccoli problemi”:</h4>
1 – il costo: la USB Rubber Ducky cost 45 dollari (senza contare l’iva e le tasse doganali di farsi spedire qualcosa dall’america, questione che io ho sperimentato sulla mia pelle, nel 2006 circa, facendomi inviare dei gadget Microsoft riservati ai Microsoft Certified Professionals)<br />
<br />
2 – la distanza: al tempo in cui avevo guardato io, nemmeno la spedivano in Italia.<br />
<br />
<br />
<a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a><br />
<h2>
La soluzione</h2>
Ho quindi cominciato a pensare come fosse possibile COSTRUIRNE una partendo dal “mio amico” Arduino (e magari molto più economica).<br />
Cercando su internet ho subito cominciato a trovare molto materiale ed ho scoperto di “non essere solo”. Tuttavia mi sono subito scontrato con la prima difficoltà: gli Arduino che avevo in casa non potevano emulare la tastiera.<br />
<br />
<h2>
Con QUALE Arduino è possibile farlo</h2>
Eh, si, perché NON TUTTI GLI ARDUINO SONO UGUALI…. Infatti, nelle sue versioni + vendute (UNO e NANO, ad esempio) montano una MCU (la CPU dei microcontrollori) a 8 bit di tipo ATMega 328 che NON SUPPORTA il protocollo USB.<br />
Se vi state domandando come fa Arduino a connettersi con la USB beh, la risposta è davvero semplice: montano, embedded sulla scheda, un convertitore USB/Seriale standard. Questo CHIP permette di tradurre il linguaggio USB per parlare (in seriale) con Arduino.<br />
Alcune MCU della ATMEL (che sono le MCU che “danno vita” ad Arduino), tuttavia, supportano nativamente il protocollo USB ed è quindi possibile programmarle per emulare un dispositivo non appena vengono connesse.<br />
<br />
Fantastico!<br />
<br />
Sul <a href="http://ww1.microchip.com/downloads/en/DeviceDoc/30010135D.pdf" target="_blank">sito della Microchip</a> (che ha recentemente comprato ATMel), è possibile scaricare una <a href="http://ww1.microchip.com/downloads/en/DeviceDoc/30010135D.pdf" target="_blank">scheda specifiche</a> che consente di capire quali MCU solitamente montate su Arduino supportano USB nativamente.<br />
Se non avete voglia di leggere o non siete curiosi, vi basta sapere che ATMega 32u4 (montato su Arduino Pro Micro) lo supporta.<br />
<br />
<h2>
Un altro problema: la libreria standard è solo US (americana)</h2>
Ecco quindi, dopo l’arrivo del tanto atteso pacchetto da Amazon con l’arduino PRO MICRO (che, nella mia versione, monta un ATMega 32u4), che mi sono messo al lavoro per testare per benino la libreria Keyboard.h di Arduino per scoprire… … con sommo orrore che la tastiera emulata è SOLO Americana e che non è supportata ufficialmente la localizzazione.<br />
<br />
<h2>
Il problema di ALT-GR</h2>
Fin qui, non ero ancora scoraggiato, perché aprendo il codice sorgente della libreria ho visto che esistevano definizioni di costanti e array di mappatura che potevano essere modificate, quindi… … mi sono messo al lavoro, soprattutto per capire se qualcuno lo avesse già fatto… purtroppo le mie prime ricerche non mi hanno portato lontano ed ho incontrato anche il problema dell’ALT-GR.<br />
Infatti, in Italia, alcuni caratteri speciali ESSENZIALI per gli script (come ad es. le parentesi graffe {} o “curly braces”) richiedono la pressione di più di un tasto modificatore (es ALT-GR + SHIFT + è = “{“ ) e questo non solo non è supportato dalla libreria (e potrete trovare anche un sacco di post e thread in giro che ne parlano e lo asseriscono come se fosse un problema inevitabile), ma NON E’ PROPRIO CONTEMPLATO!<br />
Ero abbattuto, ma non volevo rinunciare… stavo pensando di “sniffare” la USB della mia tastiera per capire la bitmap del segnale che passava mentre premevo alt-gr e altri modificatori, per poi applicare le operazioni BITWISE con le costanti a mano all’interno della libreria…<br />
… ed ecco che il mio amico PAK mi ha tirato fuori dal cilindro la soluzione: NON SOLO qualcuno aveva già fatto il lavoro, ma lo aveva fatto per QUASI TUTTE LE LINGUE! (e a me interessa solo l’italiano… :-) ).<br />
<br />
<h2>
La soluzione ALT-GR e il link dove scaricare tutte le asciimaps</h2>
<a href="https://github.com/Nurrl/LocaleKeyboard.js" target="_blank">Su Github</a>, quel BENEFATTORE dell’umanità che ha nickname Nurrl, ha persino creato un GENERATORE di librerie modificate per la propria localizzazione di tastiera!<br />
Ora, io non sono un fan delle sovrastrutture, quindi ho aperto il js, ho visto cosa faceva e, in sostanza, ho preso il file della localizzazione ed ho effettuato le stesse operazioni a mano, ricavando la libreria modificata.<br />
Inoltre, dato che avevo ricevuto dal cielo il lavoro più grosso già fatto, mi sono anche preso la briga di modificare il nome ed i metadati della libreria, creandone di fatto una copia che ho chiamato KeyboardIT (senza cambiare il nome delle classi, anche per mantenere impossibile inizializzare 2 lib keyboard nello stesso progetto).<br />
<br />
Ed ecco, la allego al post, così che la possiate scaricare ed usare direttamente (va messa la cartella dentro “libraries” nelle sottocartelle del programma Arduino IDE)<br />
<div>
<br /></div>
<div>
<br /></div>
<h2>
Un programma per testare la nostra nuova tastiera</h2>
<div>
Ecco qui un piccolo programmino che testa i caratteri speciali che si possono fare ed elenca quelli che invece sono, ahimè, per ora, proibiti. Dico per ora perchè magari troverò delle altre soluzioni mirabolanti da "fondere" con questa.. </div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #804000; font-family: "courier new"; font-size: 10.0pt;">#include <keyboardit .h=""><o:p></o:p></keyboardit></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">void</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> typeKey</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">int</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> key</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">{</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>Keyboard</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">press</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">key</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">);</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>delay</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">50</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">);</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>Keyboard</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">release</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">key</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">);</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">}</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">/* Init function */</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">void</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> setup</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">()</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">{</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">// Begining the Keyboard stream<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>Keyboard</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">begin</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">();</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>delay</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">1500</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">);</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>Keyboard</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">press</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">KEY_LEFT_GUI</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">);</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>Keyboard</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">press</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">'r'</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">);</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>Keyboard</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">releaseAll</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">();</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>delay</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">200</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">);</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>Keyboard</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">print</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"notepad"</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">);</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>delay</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">500</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">);</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>typeKey</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">KEY_RETURN</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">);</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>delay</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">750</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">);</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>Keyboard</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">print</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"SpecialChars"</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">);</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>typeKey</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">KEY_RETURN</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">);</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>delay</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">200</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">);</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">//Keyboard.print("ALL SPECIAL -
{}|\\!\"$%&/()=?'^[]+-_.:,;"); //FUNZIONA CON LA LIBRERIA
MODIFICATA <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">//èéòçà°ù§ì£5€`~ sono PROIBITI, secondo la libreria<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">// £ apre EDGE sulla guida di windows (F1?) e Si disconnette la seriale
di Arduino con uno dei caratteri speciali che seguono (RISCHIOSO?). stringa
iniziale {}|\\!\"£$%&/()=?'ì^[]+ùàò-_.:,;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">// ` è il CAPS LOCK...<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">// ho tolto i caratteri proibiti adesso<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>Keyboard</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">print</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"ALL
SPECIAL - {}|\\!\"$%&/()=?'^[]+-_.:,;"</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">);</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">//OK, SONO TUTTI OK, QUESTI<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>typeKey</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">KEY_RETURN</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">);</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>delay</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">200</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">);</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">// Ending stream<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>Keyboard</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">end</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">();</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">}</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">/* ######################################################<span style="mso-spacerun: yes;"> </span>Keyboard Layouts
#########################################<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>* <u>http://ascii-table.com/keyboard.php/103P-1</u><span style="mso-spacerun: yes;"> </span><- inglese="" o:p="" us=""></-></span></div>
</div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>* <u>http://ascii-table.com/keyboard.php/142</u><span style="mso-spacerun: yes;"> </span><- italiana="" o:p=""></-></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">*/</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">/* */</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background: white; color: #8000ff; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">void</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;"> loop</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">()</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">
</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">{}</span></b><o:p></o:p></div>
<br />
<div>
<br /></div>
<div>
<br /></div>
<h2>
Conclusioni</h2>
<div>
Ecco, finalmente anche noi italiani siamo in grado di emulare la tastiera con il <b><span style="font-size: large;">nostro arduino.</span></b></div>
<div>
<b><span style="font-size: large;"><br /></span></b></div>
<div>
<b>Happy Scripting e Merry Christmas a tutti!</b></div>
Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com5tag:blogger.com,1999:blog-3780577582011728416.post-72085555898189590922018-12-19T07:30:00.000+01:002020-07-21T19:08:38.325+02:00Script Batch con parametri nominali<span style="font-size: 50px;">B</span>uongiorno a tutti, eccoci oggi a parlare di un altro argomento di scripting ultra-classico:<br />
i parametri con nome. Pronti?<br />
<h3>
Vuoi sapere come usare gli slash per assegnare i parametri di un file .bat?</h3>
<h3>
<br />Vuoi sapere come passare parametri/variabili ad uno script senza bisogno di rispettare un ordine preciso?</h3>
<h3>
<br />Vuoi che i tuoi script batch risultino professionali a chi li usa?</h3>
<br />
Ecco lo script che fa per te. Vediamo insieme:<br />
<h2>
Come usare i parametri nominali con batch.</h2>
In sostanza qui si tratta di permettere di inserire parametri così:<br />
<br />
<span style="color: #0b5394; font-size: large;"><i>ilmioscript.bat /nomeDir:cartella1 /numFiles:25</i></span><br />
<br />
invece che così:<br />
<br />
<span style="color: #0b5394; font-size: large;"><i>ilmioscript.bat cartella1 25</i></span><br />
<br />
<h2>
Ma quanto fa più "figo" richiamare uno script nel primo modo? </h2>
E inoltre NON CI SI DEVE RICORDARE LA POSIZIONE DEI PARAMETRI!<br />
<br />
La cosa è molto molto semplice in realtà e non so davvero perchè nessuno lo faccia, in giro per il mondo...<br />
.. basta parsare il parametro "%*", che contiene TUTTI I PARAMETRI passati allo script nella command line e quindi "splittare" per slash (" / ") e per due punti (" : "), usando il trick delle variabili con nome dinamico (spiegate in quest'altro mio <a href="http://scriptomane.blogspot.com/2018/12/variabili-con-nome-dinamico-e-array-in.html" target="_blank">POST</a>).<br />
<br />
<br />
Ma bando alle ciance, vediamo come si fa:<br />
<br />
<div>
<br />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: magenta; font-family: "courier new"; font-size: 10.0pt;">@</span><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">echo</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> off<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">setlocal</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">
enabledelayedExpansion<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">FOR</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">%%x</span></b><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;"> IN</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> (</span><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">%*</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">)</span><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;"> DO</span></b><span style="background: white; color: #0080ff; font-family: "courier new"; font-size: 10.0pt;"> (</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">set</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> riga</span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">=</span></b><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">%%x</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">FOR</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> /F
"delims</span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">/: tokens</span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">1,2,</span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">*</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">" </span><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">%%a</span></b><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;"> IN</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> ("</span><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">!riga!</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">")</span><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;"> DO</span></b><span style="background: white; color: #0080ff; font-family: "courier new"; font-size: 10.0pt;"> (</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-tab-count: 2;"> </span></span><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">set</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">%%a</span></b><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">=</span></b><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">%%b</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-tab-count: 2;"> </span></span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM echo %%a e' Uguale a %%b ?<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-tab-count: 1;"> </span></span><span style="background: white; color: #0080ff; font-family: "courier new"; font-size: 10.0pt;">)</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #0080ff; font-family: "courier new"; font-size: 10.0pt;">)</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">echo</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> nick</span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">=</span></b><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">!nick!</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">echo</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> nome</span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">=</span></b><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">!nome!</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">echo</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> cognome</span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">=</span></b><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">!cognome!</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">echo</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal">
<br />
<br />
<br /></div>
<a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a><br />
<br />
<br />
Come avete visto, passando tutti i parametri (separati da spazio, comportamento di default del ciclo FOR) in %* e poi "splittandoli" con il metodo del "nested for" (come già visto per altro nel mio mitico POST: <a href="https://scriptomane.blogspot.com/2011/02/come-prendere-loutput-di-un-comando-e.html" target="_blank">Come prendere l'output di un comando e impostarlo come variabile</a>), definendo qindi tutto ciò che sta prima dei " : " come NOME della variabile e tutto ciò che sta dopo come VALORE... ecco raggiunto il nostro scopo con pochissimo sforzo...<br />
<br />
Da oggi, se dovete parametrizzare qualcosa in batch sono convintissimo che userete questo metodo: è troppo più comodo e bello!<br />
<br />
<br />
<b><span style="font-size: large;">Happy Scripting a tutti e Buone Feste!</span></b></div>
Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-39432350776359521582018-12-18T19:04:00.002+01:002019-06-24T21:01:36.895+02:00Variabili con nome dinamico e ARRAY in batch <span style="font-size: 50px;">B</span>uongiorno a tutti, oggi vediamo come utilizzare un trick molto speciale con il nostro amico batch...<br />
<br />
<h2>
... vediamo come "usare variabili con nome variabile" nei nostri script .bat</h2>
In inglese si potrebbe ricercare "<b><span style="font-size: large;">Dynamic Variable Names in Batch</span></b>"<br />
ossia "<b><span style="font-size: large;">Nomi di variabile dinamici in batch</span></b>"<br />
<br />
<br />
Con un po' di impegno vedremo anche come utilizzare una pseudo <b><span style="font-size: large;">ARRAY </span></b>(matrice).<br />
Dico "pseudo" perchè le array non esistono davvero in batch: si tratta di usare un nome particolare di variabile per farlo "sembrare" una array (es: %a[0]%, che si ottiene con: set a[0]=xxx) ed utilizzarlo come tale.<br />
<br />
<br />
<b><span style="font-size: large;">Ci sono almeno un milione di casi in cui questo è utile, ma ne cito qui solo un paio:</span></b><br />
<br />
<ul>
<li>memorizzare in variabile le risultanze di un comando in un For loop, salvandole in una variabile diversa e indicizzata per numero di ciclo (%a[123]% contiene la risultanza del 123esimo ciclo).</li>
<li>richiamare una variabile diversa in base al risultato di un comando o di una operazione, che da come risultato il nome di quella variabile (lo so: sono contorto ma, fidatevi, mi è capitato).</li>
</ul>
<div>
<br />
<a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a><br />
<br /></div>
Ma ecco, vediamo come fare, in questo script con alcuni esempi.<br />
<div>
<br /></div>
<div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: magenta; font-family: "courier new"; font-size: 10.0pt;">@</span><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">echo</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> off<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM è NECESSARIO usare la DelayedExpansion, sia perchè così possiamo
usare sia il punto esclamativo che il percentuale come <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM delimitatori, sia perchè solitamente le variabili con nome dinamico
sono all'interno di un loop.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">setlocal</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">
EnableDelayedExpansion<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM settiamo %a% = alla stringa pippo e poi settiamo la variabile
%pippo%<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">set</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> "a</span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">pippo"<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">set</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> "pippo</span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">ciao, questo e'
un messaggio che verrà richiamato solo se sai il mio nome variabile"<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM quindi, per mezzo di questa bellissima DOPPIA NOTAZIONE con il ! e
il %, richiamiamo la variabile %pippo%<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">echo</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">!%a%!</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM ######################## ESEMPIO 2: ARRAY e FOR LOOP con Dynamic
Variable name.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">for</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> /L </span><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">%%c</span></b><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;"> in</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> (1,1,50)</span><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;"> DO</span></b><span style="background: white; color: #0080ff; font-family: "courier new"; font-size: 10.0pt;"> (</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">set</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> array[</span><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">%%c</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">]</span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;">siamo nel ciclo
</span><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">%%c</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #0080ff; font-family: "courier new"; font-size: 10.0pt;">)</span><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">echo</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"> </span><b><span style="background: yellow; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">!array[25]!</span></b><span style="background: white; color: black; font-family: "courier new"; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM come vedete becchiamo ESATTAMENTE la variabile 25.<o:p></o:p></span></div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
BENE! spero di avervi solleticato abbastanza con questo tema.</div>
<div>
Buone Feste a tutti e, come sempre, Happy Scripting!</div>
Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-20041016125524674312018-10-01T19:27:00.000+02:002019-06-24T21:01:57.851+02:00Creare utenti in più server VMWare ESXi con uno script Powershell e VMWare PowerCLI<span style="font-size: 50px;">B</span>uongiorno a tutti.<br />
Oggi vi mostrerò come è possibile scriptare la creazione di utenti sugli host ESXi di VMWare utilizzando Powershell e PowerCLI: un modulo molto potente per amministrare la nostra infrastruttura virtuale con Powershell.<br />
<br />
<br />
<div class="MsoNormal">
Per prima cosa è necessario aver installato la PowerCLI
nella nostra powershell… altrimenti questi comandi non funzioneranno…<o:p></o:p></div>
<div class="MsoNormal">
Vedete quindi l’articolo “Come installare la VMWare PowerCLI in Powershell”
e poi tornate qui… <o:p></o:p></div>
<div class="MsoNormal">
<br />
Una volta installata, quando lanciamo la nostra powershell, importiamo il modulo di VMWare PowerCLI:<br />
<br /></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<i style="mso-bidi-font-style: normal;">import-module
VMware.PowerCLI<o:p></o:p></i></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid8shBg4Lak9RsH6QaUpcq-SpBrj_yzx3TXwHGglEiLwvdJRXC6okNKS9MLZOHsDjeV-3oHj4ivP2Jt8Q-C3_T8fm2ZiJXqVUYuR7wcc5VZqmMHonWHTfiEw9fZ8uhMboAhIN7tRl7wLOv/s1600/import-module.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="341" data-original-width="850" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid8shBg4Lak9RsH6QaUpcq-SpBrj_yzx3TXwHGglEiLwvdJRXC6okNKS9MLZOHsDjeV-3oHj4ivP2Jt8Q-C3_T8fm2ZiJXqVUYuR7wcc5VZqmMHonWHTfiEw9fZ8uhMboAhIN7tRl7wLOv/s640/import-module.png" width="640" /></a></div>
<br />
<div class="MsoNormal">
<h3>
E cominciamo a SCRIPTARE…</h3>
<o:p></o:p></div>
<div class="MsoNormal">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$a</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"hypervisor1.mydomain.local"</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">,</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"hypervisor2.mydomain.local"</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">,</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"hypervisor3.mydomain.local"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$userN</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"infranagios"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$strPW</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"bWtw#N--yERHGy8o"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$strDescr</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"a simple admin user"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$HOSTCredentials</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">Get-Credential</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Credential root<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$a</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">|</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">foreach</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">{</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$ESXhost</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$_</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;">Connect-VIServer <b>$ESXhost</b> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Credential <b>$HOSTCredentials</b><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;">New-VMHostAccount </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Id <b>$userN</b> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Password <b>$strPW</b> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Description <b>$strDescr</b> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">UserAccount </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Server <b>$ESXhost</b>
<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$AuthMgr</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> Get-View </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Get-View
ServiceInstance</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">).</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Content</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">AuthorizationManager<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$Entity</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> Get-Folder
ha-folder-root </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">|</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> Get-View<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$Perm</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">New-Object</span><span style="background: white; font-family: "courier new"; font-size: 10pt;">
VMware</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Vim</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Permission<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$Perm</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">entity </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>$Entity</b></span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">MoRef<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$Perm</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; color: #0080ff; font-family: "courier new"; font-size: 10.0pt;">group</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>$false</b><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$Perm</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">principal </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>$userN</b><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$Perm</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">propagate </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>$true</b><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$Perm</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">roleId </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"-1"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$AuthMgr</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">SetEntityPermissions</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$Entity</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">MoRef</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">,</span></b><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$Perm</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;">Disconnect-VIServer <b>$ESXhost</b><o:p></o:p></span></div>
<div class="MsoNormal">
<b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">}<o:p></o:p></span></b></div>
</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br />
<br />
<a href="https://www.rocketmarket.it" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a></div>
<h3>
Note importanti:</h3>
<div class="MsoNormal">
In questa dimostrazione ho deciso di copiare e incollare i comandi direttamente dentro una powershell, tuttavia nulla vi vieta di crearvi un file .ps1 e modificarlo come credete.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Come vedete qui ho fatto la scelta di definire username e password in variabile prima, ma nulla vi vieta di ciclare su un file excel e di creare tutti gli utenti su tutti i server, oppure determinati utenti su determinati server... "fate vobis"... </div>
<div class="MsoNormal">
<br />
Ho anche fatto un video (ho scritto in inglese, per fare un esperimento) che mostra il funzionamento dello script... ve lo "embeddo" !<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/MOU-i32vn2w/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/MOU-i32vn2w?feature=player_embedded" width="320"></iframe></div>
<br /></div>
<h3>
Ora comentiamo insieme il codice:</h3>
<div class="MsoNormal">
<o:p></o:p></div>
<b>1- definisco i parametri validi per tutti i servers:</b><br />
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<b><i>$a</i></b> è un elenco di server, separato da virgola, su cui
vogliamo creare l’utente.<o:p></o:p></div>
<div class="MsoNormal">
<b><i>$userN </i></b>è lo username che vogliamo creare<o:p></o:p></div>
<div class="MsoNormal">
<b><i>$strPW </i></b>è la password che verrà assegnata all’utente.<o:p></o:p></div>
<div class="MsoNormal">
<b><i>$strDescr </i></b>è la descrizione che comparirà per l’utente.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
2 - A questo punto richiedo le credenziali in modo sicuro con
<b><i>get-credentials</i></b> e le memorizzo in una variabile.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
3 - Quindi comincio a ciclare su tutti i servers in elenco e,
per ognuno<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>Mi connetto usando le credenziali</li>
<li>Creo l’utente con il comando <b><i>New-VMHostAccount</i></b> (per ora è un
utente senza ruolo)</li>
<li>Ottengo l’istanza del servizio di <i>AuthorizationManager</i></li>
<li>Ottengo l'istanza della "Entity" del server (o root folder)</li>
<li>Creo un nuovo oggetto permissions e gli assegno il ruolo “-1”
(che è quello dell’amministratore), la associo all'utente ed alla entity del server (la root folder).</li>
<li>Salvo quindi la permission dentro l’istanza del servizio <i>AuthorizationManager</i></li>
<li>mi
disconnetto dal server.</li>
</ul>
<div>
Quest'ultimo passaggio (la disconnessione) è molto importante, altrimenti PowerCLI cercherà di attuare i comandi impartiti su tutti i servers connessi... Tuttavia lo script così come è non potrebbe funzionare, avendo necessità di istanziare determinati oggetti del server che vogliamo gestire. </div>
<div>
<br /></div>
<div>
Uno alla volta quindi!</div>
<div>
<br /></div>
<div>
<b><span style="font-size: large;">Happy Scripting a tutti!</span></b></div>
<o:p></o:p><br />
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<br />Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-59587176280951028412018-09-30T08:33:00.000+02:002019-06-24T21:02:25.333+02:00Come leggere il serial number del computer direttamente da windowsBuongiorno a tutti,<br />
eccoci qui di nuovo a parlare di scripting e di automazione windows.<br />
<br />
<br />
Oggi vediamo come sia possibile ottenere il Serial Number, il produttore, il produttore della BIOS, ed altre interessanti informazioni direttamente da windows con un piccolo script, che interpella le proprietà della BIOS con vbscript.<br />
<br />
Ecco qui lo script.<br />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">const</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> ForWriting <b>=</b> </span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">2</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">set</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> Dic <b>=</b> createObject<b>(</b></span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"Scripting.dictionary"</span><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Set</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> objFSO <b>=</b> createObject<b>(</b></span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"Scripting.FilesystemObject"</span><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Set</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> oShell <b>=</b> CreateObject<b>(</b></span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"Wscript.Shell"</span><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Set</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> varAmbientali <b>=</b>
oShell.Environment<b>(</b></span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"PROCESS"</span><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;">nomecomputer <b>=</b> varAmbientali<b>(</b></span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"COMPUTERNAME"</span><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;">fileLog <b>=</b> nomecomputer <b>&</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"_info.txt"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Set</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> objFileLog <b>=</b> objFSO.OpenTextFile<b>(</b>fileLog<b>,</b>
ForWriting<b>,</b> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">True</span><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;">strComputer <b>=</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"."</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Set</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> objWMIService <b>=</b>
GetObject<b>(</b></span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"winmgmts:"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> _<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>&</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"{impersonationLevel=impersonate}!\\"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>&</b> strComputer <b>&</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"\root\cimv2"</span><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Set</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> colBIOS <b>=</b>
objWMIService.ExecQuery _<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>(</b></span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"Select * from Win32_BIOS"</span><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Set</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> objB <b>=</b>
objWMIService.Get<b>(</b></span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"Win32_BIOS"</span><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">).</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Spawninstance_<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">for</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">each</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> objProp </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">in</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> objB.Properties_<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">dim</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> objProp<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> Dic.Add objProp.Name<b>,</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">""</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM wscript.echo objProp.Name & ": " & " - tipo:
" & TypeName(objProp) & "- Array : " & objProp.value<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM for each objPP in objProp<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM For i = 0 to Ubound(objBIOS.BIOSVersion)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM wscript.echo ObjB.Properties_(objProp.Name)(i)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM next<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM next<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">next</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM for each strPName in Dic.Keys<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM wscript.echo strPName & ": " &
objB.Properties_(strPName).Value<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM next<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">For</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">each</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> objBIOS </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">in</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> colBIOS<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">for</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">each</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> strPName </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">in</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> Dic.Keys<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM wscript.echo strPName<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM strCodeT = "wscript.echo strPName &
"" - "" & typeName(objBIOS." & strPName &
")"<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM execute strCodeT<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> strCode <b>=</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"t = typeName(objBIOS."</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>&</b> strPName <b>&</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">")"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> executeGlobal strCode<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">select</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">case</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> t<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Case</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"String"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> strCode1 <b>=</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"objFileLog.WriteLine strPName & "":
"" & objBIOS."</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>&</b>
strPName<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Case</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"Boolean"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> strCode1 <b>=</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"objFileLog.WriteLine strPName & "":
"" & objBIOS."</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>&</b>
strPName<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Case</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"Date"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> strCode1 <b>=</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"objFileLog.WriteLine strPName & "":
"" & objBIOS."</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>&</b>
strPName<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Case</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"Int"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> strCode1 <b>=</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"objFileLog.WriteLine strPName & "":
"" & objBIOS."</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>&</b>
strPName<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Case</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"Long"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> strCode1 <b>=</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"objFileLog.WriteLine strPName & "":
"" & objBIOS."</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>&</b>
strPName<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Case</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"Variant()"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> strCode1 <b>=</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"For i = 0 to Ubound(objBIOS."</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>&</b> strPName <b>&</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">")"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>&</b>
vbCrLf <b>&</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"objFileLog.WriteLine
strPName & "": "" & objBIOS."</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>&</b> strPName <b>&</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"(i)"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>&</b>
vbCrLf <b>&</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"Next"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Case</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Else</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> strCode1 <b>=</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"objFileLog.WriteLine strPName & "":
"" "</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">end</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">select</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> executeGlobal strCode1<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM wscript.echo strPName & ": " &
objBIOS.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">next</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "Caption: " & objBIOS.Caption<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "Build Number: " &
objBIOS.BuildNumber<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "Current Language: " &
objBIOS.CurrentLanguage<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "Installable Languages: " &
objBIOS.InstallableLanguages<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "Manufacturer: " &
objBIOS.Manufacturer<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "Name: " & objBIOS.Name<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "Caption: " & objBIOS.Caption<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "Description: " &
objBIOS.Description<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "IdentificationCode: " &
objBIOS.IdentificationCode<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "InstallableLanguages: " &
objBIOS.InstallableLanguages<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "InstallDate: " &
objBIOS.InstallDate<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "Primary BIOS: " &
objBIOS.PrimaryBIOS<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "Release Date: " &
objBIOS.ReleaseDate<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "Serial Number: " &
objBIOS.SerialNumber<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "SMBIOS Version: " & objBIOS.SMBIOSBIOSVersion<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "SMBIOS Major Version: " &
objBIOS.SMBIOSMajorVersion<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "SMBIOS Minor Version: " &
objBIOS.SMBIOSMinorVersion<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "SMBIOS Present: " &
objBIOS.SMBIOSPresent<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "Status: " & objBIOS.Status<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "Version: " & objBIOS.Version<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM For i = 0 to Ubound(objBIOS.BIOSVersion)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "BIOS Version: " &
_<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objBIOS.BIOSVersion(i)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM Next<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM For i = 0 to Ubound(objBIOS.BiosCharacteristics)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objFileLog.WriteLine "BIOS Characteristics:
" & _<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM objBIOS.BiosCharacteristics(i)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">REM Next<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> <o:p></o:p></span></div>
<br />
<div class="MsoNormal">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">Next</span><o:p></o:p></div>
<br />
<br />
<br />
<a href="https://www.rocketmarket.it" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a><br />
<br />
<br />
<br />
In pratica, utilizzando WMI (Windows Management Instrumentation), leggiamo le proprietà possibili della BIOS in un dictionary object e quindi le interroghiamo poi per ogni istanza di BIOS trovata nel sistema (solitamente solo 1 :-) ), a questo punto "componiamo" delle stringhe comando, in base alle casistiche in cui ci troviamo, per rendere leggibile il tutto e poi scriviamo in un file che ha nome del computer.<br />
<br />
<br />
Happy Scripting!Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-27135853724193650542018-09-29T08:40:00.000+02:002019-06-24T21:03:23.853+02:00Installare la VMWare PowerCLI in Powershell con NuGet<br />
<div class="MsoNormal">
Buongiorno a tutti,</div>
<div class="MsoNormal">
oggi vi parlerò di come cominciare ad amministrare la vostra infrastruttura virtuale VMWare con gli script. Pensavate non fosse possibile? Vi sbagliavate!</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
VMWare ha messo a disposizione dei Sysadmins una serie di
comandi per renderci la vita MOOOLTO più semplice.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Attraverso la PowerCLI, possiamo gestire e mantenere un
ambiente virtualizzato VMware anche multiserver. <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
PowerCLI è uno strumento molto potente che può essere
utilizzato per raccogliere informazioni dettagliate e/o eseguire comandi su
molteplici macchine virtuali, host e apparati di rete e storage compatibili.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<h4>
I requisiti per installare la PowerCLI sono:</h4>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>accesso di rete al (o ai) VMware vCenter server (oppure agli
Host ESXi)</li>
<li>Windows PowerShell 2.0 con .NET 3.5 SP1 o superiore (meglio
però installare le versioni più aggiornate)</li>
</ul>
<o:p></o:p><br />
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<h4>
In questa guida step-by-step vedremo:</h4>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>preparare il sistema per installare la PowerCLI</li>
<li>Installare la VMWare PowerCLI direttamente da internet con
install-module e <b>NuGet</b></li>
</ul>
<o:p></o:p><br />
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<h2>
Prepararsi con NuGet</h2>
<div class="MsoNormal">
dal nostro PC connesso ad internet è possibile utilizzare il
comando:<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i style="mso-bidi-font-style: normal;"><b>find-module -name
VMWare.PowerCLI</b><o:p></o:p></i></div>
<div class="MsoNormal">
<i style="mso-bidi-font-style: normal;"><br /></i></div>
<div class="MsoNormal">
Ci chiederà di installare il provider NuGet, rispondiamo di
SI.<o:p></o:p></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEictw7tM_q9voPBhWmFqz1B-5tD8265naboTxfqCVpa3IyK1OLF9UKM3pKkFEZqUQE07tMWuE62h_bwWhPX2s6IVVqwYlQMQCAGLJ1lEeY1XIrNH6JcRwxyQ-bpJtbqJ8Ld8y8f0Vkj3p5b/s1600/find-module.PowerCLI.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="273" data-original-width="860" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEictw7tM_q9voPBhWmFqz1B-5tD8265naboTxfqCVpa3IyK1OLF9UKM3pKkFEZqUQE07tMWuE62h_bwWhPX2s6IVVqwYlQMQCAGLJ1lEeY1XIrNH6JcRwxyQ-bpJtbqJ8Ld8y8f0Vkj3p5b/s640/find-module.PowerCLI.png" width="640" /></a></div>
<br />
<br />
<br />
<div class="MsoNormal">
A questo punto possiamo controllare rapidamente quali sono i
moduli Powershell disponibili con il comando:<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i style="mso-bidi-font-style: normal;"><b>get-module VMWare*
-ListAvailable</b><o:p></o:p></i></div>
<div class="MsoNormal">
<i style="mso-bidi-font-style: normal;"><br /></i></div>
<div class="MsoNormal">
Ed otterremo un elenco vuoto…<b> il che non è esattamente
quello che vogliamo, no?</b><o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b>
<b><br /></b>
<a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a><br />
<br /></div>
<h2>
Installare la VMWare PowerCLI direttamente da internet</h2>
<div class="MsoNormal">
È necessario quindi installare il module VMWare.PowerCLI <span style="mso-spacerun: yes;"> </span>con il comando:<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i style="mso-bidi-font-style: normal;"><b>Install-Module -name
VMWare.PowerCLI</b><o:p></o:p></i></div>
<div class="MsoNormal">
<i style="mso-bidi-font-style: normal;"><br /></i></div>
<div class="MsoNormal">
Ci chiederà conferma nell’utilizzo di un “Archivio non
attendibile” (in inglese sarebbe “untrusted repository”, così è più facile da
capire…)<o:p></o:p></div>
<div class="MsoNormal">
Confermiamo pure…<o:p></o:p></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIYaj-SJWibn4-D3lTiIR1GBDaB7Y6ZJeWlBZNSNOf3VHtNn2F_KHEbFOxUpv11DFSaf-wKkQLxfeko3w0CSKISeb7R8awK-HorkZsDkhdBCYsX59ZR0mpchaq7L71KjUHGxmeGP6Qz05I/s1600/untrusted-repository.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="199" data-original-width="844" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIYaj-SJWibn4-D3lTiIR1GBDaB7Y6ZJeWlBZNSNOf3VHtNn2F_KHEbFOxUpv11DFSaf-wKkQLxfeko3w0CSKISeb7R8awK-HorkZsDkhdBCYsX59ZR0mpchaq7L71KjUHGxmeGP6Qz05I/s640/untrusted-repository.png" width="640" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWCdNy5M1_Ohb3AQEqTAhN7HnR7j8AT-GQcRb-bICjcdqZTRcZRRF-q8Yyq3P01HO1Bxax0rI5y2GHmE8iFoKtyIS1FUnRE09y0RwvhwMUpSakUzK5ykZ76N-OG17gPEKHp53maJKYBtxr/s1600/installing.PowerCLI.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="263" data-original-width="859" height="194" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWCdNy5M1_Ohb3AQEqTAhN7HnR7j8AT-GQcRb-bICjcdqZTRcZRRF-q8Yyq3P01HO1Bxax0rI5y2GHmE8iFoKtyIS1FUnRE09y0RwvhwMUpSakUzK5ykZ76N-OG17gPEKHp53maJKYBtxr/s640/installing.PowerCLI.png" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
A questo punto, rilanciando il comando :<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i><b>get-module VMWare*
-ListAvailable</b><o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
Ci troveremo davanti una situazione di questo tipo:<o:p></o:p></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn0wkvj6IZTuzIY8qyEoL8zht4kCwiyuZE-kaSTl_fcAT-icoy44As_brdqlmebjbNk7-sic_a4bJ4JPl7AJL9_JVXboEGZb2ekR-ZXZOetsIM8d6WWn0fJDIywmBG0kn1wb-L-6v6hJmv/s1600/PowerCLI.LISTMODULES.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="392" data-original-width="849" height="294" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn0wkvj6IZTuzIY8qyEoL8zht4kCwiyuZE-kaSTl_fcAT-icoy44As_brdqlmebjbNk7-sic_a4bJ4JPl7AJL9_JVXboEGZb2ekR-ZXZOetsIM8d6WWn0fJDIywmBG0kn1wb-L-6v6hJmv/s640/PowerCLI.LISTMODULES.png" width="640" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Il che significa che <b><span style="font-size: large;">la PowerCLI è stata installata
correttamente.</span></b><o:p></o:p></div>
<div class="MsoNormal">
A questo punto abbiamo a disposizione una serie molto molto
vasta di comandi per interagire con la nostra infrastruttura VMWARE!<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Happy Scripting!!<o:p></o:p></div>
Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-59934802259194178602018-09-27T23:21:00.000+02:002019-06-24T21:03:47.293+02:00Un IP SCANNER in BATCH da una riga di codice, senza installare niente<span style="font-size: 50px;">B</span>uongiorno a tutti,<br />
eccoci qui di nuovo a parlare di scripting e di belle cose che si possono automatizzare con i nostri comandi interpretati.<br />
<br />
Oggi voglio parlarvi di un trucco che uso spesso quando mi trovo in situazioni nelle quali devo identificare tutti gli host attivi di una rete e non ho possibilità (o voglia, o tempo) di installare un software per farlo.<br />
<br />
Sinceramente, non capisco perché andiamo a scomodare programmi e installare cose sul PC, quando possiamo tranquillamente aprire un prompt dei comandi e digitare<br />
<br />
<br />
<b><i>For /L %a IN (1,1,254) DO @ping -n 1 -w 100 192.168.1.%a | FIND /I "risposta"</i></b><br />
<b><i><br /></i></b>
<b><i><br /></i></b>
Ovviamente, vi devo spiegare.<br />
Per prima cosa so che la mia rete di casa è con indirizzamento 192.168.1.xxx, ossia 24 bit di subnet mask (255.255.255.0), ossia, in soldoni: va da 192.168.1.1 a 192.168.1.254.<br />
<br />
Informazioni facilmente ottenibili anche da qualsiasi computer con il comando : <b><i>ipconfig</i></b><br />
<br />
Quindi scelgo di ciclare con FOR, partendo da 1, aggiungendo 1 ad ogni ciclo e fino ad arrivare a 254 (1,1,254) e memorizzando il valore attuale nella variabile %a.<br />
<h3>
Nota importante:</h3>
Se mettete questo comando in un file .bat, <b><i>%a</i></b> deve diventare <b><i>%%a</i></b><br />
<div>
<b><i><br /></i></b></div>
<br />
Per ogni ciclo, poi, pingo l'indirizzo 192.168.1.%a (dove %a prenderà il valore del ciclo attuale) e cerco, nell'output del comando, la parola "Risposta", in modo case-insensitive (/I) con FIND.<br />
<br />
Per andare più veloce e avere un output più pulito, faccio un ping una volta sola per ciclo (-n 1) e do un timeout di 100 millisecondi (-w 100).<br />
<br />
<h3>
</h3>
<h2>
ed ecco il risultato che otteniamo</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOvAYSFKYYmbjmIdrKO12BA8di7dprPyU9Q5QAq5wYzzEhSGDp93hfExixDYNGpmE2aeOx0aMy1TywCc30Bxpk4ubkM0gDKduCjyuzV19t-SaC40otTwsZXDBx0DUuiC_klb00tJmXQyKM/s1600/ipscanner.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="174" data-original-width="1088" height="102" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOvAYSFKYYmbjmIdrKO12BA8di7dprPyU9Q5QAq5wYzzEhSGDp93hfExixDYNGpmE2aeOx0aMy1TywCc30Bxpk4ubkM0gDKduCjyuzV19t-SaC40otTwsZXDBx0DUuiC_klb00tJmXQyKM/s640/ipscanner.PNG" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
in sintesi, in ogni riga c'è un indirizzo IP che ha risposto al PING.</div>
<div>
<br /></div>
<div>
<span style="font-size: large;">Facile, no?</span></div>
<div>
<br /></div>
<div>
Happy Scripting!<br />
<br />
<br />
<a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a></div>
Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-46820567012771585252018-09-27T22:59:00.001+02:002019-06-24T21:04:20.442+02:00Come (ciclare su) leggere un file excel con Powershell<span style="font-size: 50px;">B</span>uongiorno a tutti,<br />
eccoci qui con un altro articolo interessante che vede protagonisti excel e gli script.<br />
<br />
Nello scorso articolo "<a href="http://scriptomane.blogspot.com/2018/09/vbscript-leggere-excel.html" target="_blank">Come (ciclare su) leggere un file EXCEL con VBSCRIPT</a>" abbiamo visto come è possibile leggere un file di excel da vbscript e lanciare dei comandi riga per riga, con i valori delle celle come parametri.<br />
<br />
Oggi vediamo come fare la stessa cosa... ...<b>con Powershell!</b><br />
<b><br /></b>
<b>Bando alle ciance, ecco cosa faremo:</b><br />
<br />
<h3>
<ol>
<li><b>Creeremo un file excel con gli utenti che ci interessa usare</b></li>
<li><b>Cicleremo (loop) sul file excel per ottenere ogni utente</b></li>
<li><b>Interpelleremo il dominio Active Directory per ottenere informazioni su ciascun utente: vedremo l'ultima volta che l'utente ha cambiato la password</b></li>
</ol>
</h3>
<b><br /></b>
<br />
<h2>
<b>Il file excel users.xlsx</b></h2>
<div>
ecco come si presenta il nostro file (l'ho riciclato dall'altro articolo):</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7ybhBLgG0A881Z9ulWyXtR34D0O8qd1zD3GRp2QuSpIrCebRGqNeiK9mjozugSbpk4SAJ3bsOcsjzEuAuQzVgKORms2cI6cEmFntXIZKQBDG6ez2Q3ukW6qinynuV-h0l6qX8-Gx-asyI/s1600/Utenti.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="159" data-original-width="773" height="130" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7ybhBLgG0A881Z9ulWyXtR34D0O8qd1zD3GRp2QuSpIrCebRGqNeiK9mjozugSbpk4SAJ3bsOcsjzEuAuQzVgKORms2cI6cEmFntXIZKQBDG6ez2Q3ukW6qinynuV-h0l6qX8-Gx-asyI/s640/Utenti.PNG" width="640" /></a></div>
<div>
<br /></div>
<div>
come vedete, nella colonna E troviamo lo username degli utenti.</div>
<div>
<br /></div>
<h2>
Lo script</h2>
<div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;">import-module activedirectory </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">#importo
il modulo Active Directory</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$ExcelObject</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">new-Object</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">comobject Excel</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Application </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">#
creo l'instanza di programma excel</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$ExcelObject</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">visible </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>$false</b> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">#
non voglio che la finestra di excel sia visibile</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$ExcelObject</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">DisplayAlerts </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$false</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;"># non voglio vedere alerts o messaggi da excel.</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$strPath1</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"C:\Users\DiegoC\Desktop\TMP\Private\SCRIPTOMANE\2018-09-25_powershell_excel\users.xlsx"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;"># definisco il percorso del file excel.</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">if</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">Test-Path</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>$strPath1</b></span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">{</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">#controllo che il file ESISTA</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$ActiveWorkbook</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>$ExcelObject</b></span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">WorkBooks</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Open</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$strPath1</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">#
apro il workbook excel.</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$ActiveWorksheet</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>$ActiveWorkbook</b></span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Worksheets</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Item</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><span style="background: white; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">1</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">#
seleziono il foglio numero 1</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">}</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">else</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">{</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #0080ff; font-family: "courier new"; font-size: 10.0pt;">echo</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"ORRORE: il file excel non esiste"</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">;</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;"># altrimenti scrivo un messaggio simpatico....</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">}</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$intRow</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">2</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;"># parto dalla riga 2, perchè la prima contiene le
intestazioni</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Do</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">{</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>$UserName</b> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>$ActiveWorksheet</b></span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Cells</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Item</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$intRow</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">,</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">5</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">).</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Value</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">()</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">#leggo lo username dalla
quinta colonna (E)</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>$FName</b> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>$ActiveWorksheet</b></span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Cells</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Item</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$intRow</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">,</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">1</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">).</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Value</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">()</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">#leggo il full Name dalla
prima colonna (A)</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>$obj</b> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">=</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> get-aduser <b>$UserName</b>
</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Properties
PasswordLastSet </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;"># ottengo da AD le proprietà
dell'utente, incluso quando ha cambiato la pw l'ultima volta.</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: #8000ff; font-family: "courier new"; font-size: 10.0pt;">write-host</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"l'utente "</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>$FName</b>
</span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">" ha cambiato la password il "</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>$obj</b></span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">PasswordLastSet<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>$intRow</b></span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">++</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">}</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">While</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$ActiveWorksheet</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Cells</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Item</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">(</span></b><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$intRow</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">,</span></b><span style="background: white; color: #ff8000; font-family: "courier new"; font-size: 10.0pt;">1</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">).</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Value</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">()</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">-</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">ne <b>$null</b></span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">#continuo fino a che non trovo una riga vuota.</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt;">$ExcelObject</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Workbooks</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;">Close</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt;">()</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;"># chiudo il file</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
</div>
<div class="MsoNormal">
<b><span style="background: white; font-family: "courier new"; font-size: 10pt; line-height: 107%;">$ExcelObject</span></b><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">.</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt; line-height: 107%;">Quit</span><b><span style="background: white; color: navy; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">()</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt; line-height: 107%;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;"># chiudo excel</span><o:p></o:p></div>
</div>
<div>
<br />
<br />
<br />
<a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a><br />
<br />
<br /></div>
<div>
<h2>
Il risultato</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbZhugTgBT93qFgepngAbnjZQ65hJzeF0-jKUR0RwqmxqyWSRTdXZwNLh7VcQF56eSd5D5PdB6V93HMHwJP7bouC3deyAv0Pwq2pKbXp98kBwEh5XXMwT4fZ6Qij5vc3sRNuGx9tCCiUFE/s1600/output.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="213" data-original-width="1037" height="130" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbZhugTgBT93qFgepngAbnjZQ65hJzeF0-jKUR0RwqmxqyWSRTdXZwNLh7VcQF56eSd5D5PdB6V93HMHwJP7bouC3deyAv0Pwq2pKbXp98kBwEh5XXMwT4fZ6Qij5vc3sRNuGx9tCCiUFE/s640/output.PNG" width="640" /></a></div>
<br /></div>
Come vedete, leggere un file excel con Powershell, riga per riga, non è molto diverso da come si fa con Vbscript. Tuttavia Powershell offre veramente moltissime possibilità per amministrare i nostri server, le nostre applicazioni e, in generale, interagire con windows in maniera parecchio facile e veloce.<br />
<br />
Ad esempio, se ci trovassimo su un server Exchange (o se stessimo interagendo con il server dal nostro client attraverso una session remota di Powershell) potremmo lanciare dei comandi per ogni casella di posta o utente riportato nel nostro file...<br />
<br />
<br />
<br />
A voi la scelta dei comandi da far eseguire alla nostra amata Powershell, con i dati che leggete da excel!<br />
<br />
Happy Scripting!<br />
<br />Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0tag:blogger.com,1999:blog-3780577582011728416.post-81028906504061908762018-09-27T19:30:00.000+02:002019-06-24T21:07:29.860+02:00Come (ciclare su) leggere un file EXCEL con VBSCRIPT<span style="font-size: 50px;">B</span>uongiorno a tutti, eccoci di nuovo qui a parlare di scripting. :-)<br />
Oggi affrontiamo un argomento che non passa mai di moda: come leggere i file excel con vbscript e come ciclare (o looppare) sui valori contenuti in un determinato foglio (in questo caso il PRIMO) per eseguire poi altre operazioni di script sui valori che ci leggiamo dentro.<br />
<br />
<h4>
Ora, analizziamo lo scenario brevemente:</h4>
vogliamo cambiare la password di 1000 utenti nel nostro dominio (è solo una ipotesi) prendendo i valori username e password da un elenco di excel con le colonne colonne:<br />
<br />
-Nome Completo<br />
-Spazio<br />
-Nome<br />
-Cognome<br />
-Username (samid)<br />
-nuova Password<br />
<br />
<h4>
Ecco come si presenta il nostro elenco users.xlsx (fingete che ci siano 1000 righe :-P )</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6LLI8z4iEJs7JugHe8ibFZwvwJPJtSf-FQsMRucuqH-tSsbsdvq77jk72fUuPVm28Ax5JjDP4Ukyqz8P0ak1Pr0P4thmI2vZl-OtpdmTqJUxX7KlCfacB5_bSEMJrux_1wOqL1wKurpyl/s1600/Utenti.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="159" data-original-width="773" height="130" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6LLI8z4iEJs7JugHe8ibFZwvwJPJtSf-FQsMRucuqH-tSsbsdvq77jk72fUuPVm28Ax5JjDP4Ukyqz8P0ak1Pr0P4thmI2vZl-OtpdmTqJUxX7KlCfacB5_bSEMJrux_1wOqL1wKurpyl/s640/Utenti.PNG" width="640" /></a></div>
<br />
<br />
Di fatto, questo articolo si poteva chiamare anche:<br />
<h3>
Come cambiare la password a molti utenti contemporaneamente da un file excel.</h3>
:-P<br />
<br />
<h3>
Ma torniamo a noi:</h3>
Cominciamo con uno script innocuo: leggeremo tutte le righe del foglio da Excel (che deve essere installato sulla macchina che esegue lo script, ovvio) e faremo l'output (echo) dello username e delle nuove password.<br />
<br />
eccolo qui:<br />
<br />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;">strFileName <b>=</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"C:\Users\DiegoC\Desktop\TMP\Private\SCRIPTOMANE\2018-09-25_vbscriptExcel\users.xlsx"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">'definiamo il nome del file
con il suo percorso completo.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Set</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> oExcel <b>=</b>
WScript.CreateObject<b>(</b></span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"Excel.Application"</span><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' creo l'oggetto applicazione con cui interagiremo<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;">oExcel.Visible <b>=</b> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">True</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' imposto che la finestra di
excel debba essere VISIBILE, per ora. Volendo si può anche rendere invisibile.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Set</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> theWbook <b>=</b>
oExcel.Workbooks.Open<b>(</b>strFileName<b>)</b> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' apro il file excel<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;">theWbook.Activate </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' "attivo" il file
excel tra i sotto-processi di Excel.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">set</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> theSheet <b>=</b>
theWbook.Sheets<b>(</b></span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">1</span></b><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' seleziono il primo foglio<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;">theSheet.Activate </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' attivo il primo foglio.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;">i <b>=</b> </span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">2</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' saltiamo la prima riga, che
contiene le intestazioni e andiamo direttamente alla riga 2<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Do</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Until</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> x <b>=</b> </span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">1</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' condizione sempre vera, interromperemo il ciclo solo in
determinate condizioni<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">If</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> theSheet.Cells<b>(</b>i<b>,</b></span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">1</span></b><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>=</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">""</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Then</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' se la riga a cui siamo
arrivati, nella colonna 1 (A) è vuota, allora interrompi.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Exit</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Do</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">End</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">If</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> Wscript.Echo theSheet.Cells<b>(</b>i<b>,</b></span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">5</span></b><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>+</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">" - Nuova
Password: "</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>+</b> theSheet.Cells<b>(</b>i<b>,</b></span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">6</span></b><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)</span></b><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' scriviamo l'output delle celle che contengono username e
password, ossia 5(E) e 6(F)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> i <b>=</b> i <b>+</b> </span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">1</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' aumentiamo il numero di riga per passare a quella
successiva.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Loop</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<br />
<div class="MsoNormal">
<span style="background: white; font-family: "courier new"; font-size: 10pt; line-height: 107%;">oExcel.Quit </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">' chiudiamo excel.</span><o:p></o:p></div>
<br />
<br />
ed ecco il risultato che otterremo con CSCRIPT (dopo una breve visualizzazione del foglio excel, che compare perchè abbiamo lasciato il parametro Visible= true):<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI79HuV3ngTO6f47aWoq9_7ODGdIr8izyi8uiDSV_L2EwLuA0KCexiZpqhOXJeStHX59nkaJ4An38MZ_SA6tkTPPBM76cb7TGisuhLqeN7Q8TRdHTFvo9Dw69jrsss7yF-3ffDh6S_BeSw/s1600/PrimoScript.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="640" data-original-width="880" height="464" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI79HuV3ngTO6f47aWoq9_7ODGdIr8izyi8uiDSV_L2EwLuA0KCexiZpqhOXJeStHX59nkaJ4An38MZ_SA6tkTPPBM76cb7TGisuhLqeN7Q8TRdHTFvo9Dw69jrsss7yF-3ffDh6S_BeSw/s640/PrimoScript.PNG" width="640" /></a></div>
<br />
<br />
<br />
a questo punto sappiamo che lo script funziona e che è in grado di leggere le utenze dal file users.xlsx una alla volta, e le rispettive nuove password.<br />
Quindi facciamo tesoro di quello che abbiamo imparato nell'articolo numero 3 della mini-serie dedicata agli strumenti dsadd, dsquery, dsget e dsmod per impartire un comando (usando una console da vbscript) che cambierà la password a tutti quegli utenti.<br />
<br />
il comando singolo è questo:<br />
<b><i>dsquery user -samid <span style="color: #8e7cc3;">#IL NOME UTENTE#</span> | dsmod user -pwd <span style="color: #8e7cc3;">#la sua nuova password#</span></i></b><br />
<br />
ed è necessario editare lo script in questo modo per far si che la magia accada:<br />
<br />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;">strFileName <b>=</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"C:\Users\DiegoC\Desktop\TMP\Private\SCRIPTOMANE\2018-09-25_vbscriptExcel\users.xlsx"</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">'definiamo il nome del file
con il suo percorso completo.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Dim</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> shell </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' dichiaro la variabile shell<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Set</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> shell <b>=</b> CreateObject<b>(</b></span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"WScript.Shell"</span><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' istanzio una shell nell'oggetto shell<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Set</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> oExcel <b>=</b>
WScript.CreateObject<b>(</b></span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"Excel.Application"</span><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' creo l'oggetto applicazione con cui interagiremo<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;">oExcel.Visible <b>=</b> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">True</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' imposto che la finestra di
excel debba essere VISIBILE, per ora. Volendo si può anche rendere invisibile.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Set</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> theWbook <b>=</b>
oExcel.Workbooks.Open<b>(</b>strFileName<b>)</b> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' apro il file excel<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;">theWbook.Activate </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' "attivo" il file
excel tra i sotto-processi di Excel.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">set</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> theSheet <b>=</b>
theWbook.Sheets<b>(</b></span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">1</span></b><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' seleziono il primo foglio<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;">theSheet.Activate </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' attivo il primo foglio.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;">i <b>=</b> </span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">2</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' saltiamo la prima riga, che
contiene le intestazioni e andiamo direttamente alla riga 2<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Do</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Until</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> x <b>=</b> </span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">1</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' condizione sempre vera, interromperemo il ciclo solo in
determinate condizioni<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">If</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> theSheet.Cells<b>(</b>i<b>,</b></span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">1</span></b><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>=</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">""</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Then</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' se la riga a cui siamo
arrivati, nella colonna 1 (A) è vuota, allora interrompi.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Exit</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Do</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">End</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">If</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">'Wscript.Echo theSheet.Cells(i,5) + " - Nuova Password: "
+ theSheet.Cells(i,6)' scriviamo
l'output delle celle che contengono username e password, ossia 5(E) e 6(F)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> comando<b>=</b></span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"dsquery user -samid "</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>+</b> theSheet.Cells<b>(</b>i<b>,</b></span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">5</span></b><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>+</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">"| dsmod
user -pwd "</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>+</b> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">""</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> <b>+</b>
theSheet.Cells<b>(</b>i<b>,</b></span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">6</span></b><b><span style="background: white; font-family: "courier new"; font-size: 10pt;">)+</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: grey; font-family: "courier new"; font-size: 10.0pt;">""</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' creo il comando che verrà eseguito<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> shell.Run comando </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' eseguo il comando nella shell<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; font-family: "courier new"; font-size: 10pt;"> i <b>=</b> i <b>+</b> </span><b><span style="background: white; color: red; font-family: "courier new"; font-size: 10.0pt;">1</span></b><span style="background: white; font-family: "courier new"; font-size: 10pt;"> </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt;">' aumentiamo il numero di riga per passare a quella
successiva.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: "courier new"; font-size: 10.0pt;">Loop</span><span style="background: white; font-family: "courier new"; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<br />
<div class="MsoNormal">
<span style="background: white; font-family: "courier new"; font-size: 10pt; line-height: 107%;">oExcel.Quit </span><span style="background: white; color: green; font-family: "courier new"; font-size: 10.0pt; line-height: 107%;">' chiudiamo excel.</span><o:p></o:p></div>
<br />
A questo punto, quando lanceremo lo script con CSCRIPT (da un account amministratore di dominio o che al minimo sia autorizzato a resettare quelle password), le password di tutti quegli utenti verranno modificate.<br />
<br />
<br />
<h4>
Happy Scripting!</h4>
<br />
<br />
<a href="https://www.rocketmarket.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"><img border="0" data-original-height="455" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHt23hn0Zg_6gFtNpnalNURuj1Xif8LFgeMTwd9xes67RbGfsm8uQ-e_ppUOAeK8kat45bdpKrsVdorcQ0h5scu3BxDlqSJwvLuXa8V_kuulFtU-BlpBxPFiHhpcPZZfPn77fgU0RaaNjG/s640/bannerRM.PNG" style="box-shadow: rgba(117, 117, 117, 0.65) 3px 3px 11px 0px;" width="640" /></a><br />
<br />
P.S. alcune limitazioni: le password con caratteri particolari che vengono interpretati da batch come comandi (es. |, ^, !, %, ...) non possono funzionare con questo sistema, salvo farne l'escape con il carattere cappelletto ("^") direttamente nel valore dell'excel.<br />
<br />
L'ho appena testato ed è così. :-)<br />
es. di password escapata: pippo^%pluto^!Diego Castellihttp://www.blogger.com/profile/17621591298780548025noreply@blogger.com0