<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://pulsarit.net/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>$ClaudioG.Blog = $True : Scripting, PowerShell</title><link>http://pulsarit.net/cs/blogs/claudiog/archive/tags/Scripting/PowerShell/default.aspx</link><description>Tags: Scripting, PowerShell</description><dc:language>it</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Verificare la versione di Integration Services per VM di Host Hyper-V R2</title><link>http://pulsarit.net/cs/blogs/claudiog/archive/2010/08/25/come-verificare-la-versione-di-integration-services-per-le-vm-di-host-hyper-v.aspx</link><pubDate>Wed, 25 Aug 2010 19:31:00 GMT</pubDate><guid isPermaLink="false">d806d591-cae8-4839-ac9f-5825260148f9:133</guid><dc:creator>claudiog</dc:creator><slash:comments>0</slash:comments><comments>http://pulsarit.net/cs/blogs/claudiog/comments/133.aspx</comments><wfw:commentRss>http://pulsarit.net/cs/blogs/claudiog/commentrss.aspx?PostID=133</wfw:commentRss><description>&lt;p&gt;Una domanda piuttosto frequente, data la&lt;i&gt; Best Practice&lt;/i&gt; di avere *&lt;b&gt;SEMPRE&lt;/b&gt;* corrispondenza tra la versione dell’Host e dei Guest Components di Hyper-V, è come si faccia a determinare quale versione sia in esecuzione in una VM.&lt;/p&gt;  &lt;p&gt;In realtà i metodi potrebbero essere diversi, partendo dal gratuito ma &lt;b&gt;&lt;u&gt;molto empirico&lt;/u&gt;&lt;/b&gt; censimento via WSUS (per esempio) di quali server siano “Virtual Machine” (Computer Model) e poi verificando la parte finale del BIOS, che indica la versione (080002 per 2008 SP2, 090004 per 2008 R2) … ma direi abbastanza scomodo :)     &lt;br&gt;Purtroppo anche in piattaforme Hyper-V gestite da System Center Virtual Machine Manager (SCVMM), non esiste un modo (almeno io non l’ho trovato) per ottenere quell’informazione, ma solo per sapere se una VM ha gli IS installati (un pò deludente).&lt;/p&gt;  &lt;p&gt; Ho preso spunto quindi dal post “&lt;a href="http://blogs.technet.com/b/tonyso/archive/2009/08/21/hyper-v-how-to-check-if-ics-ar-current-using-script.aspx" title="Tony Soper: Hyper-V How To: Check if ICs are Current using Script" target="_blank"&gt;Hyper-V How To: Check if ICs are Current using Script&lt;/a&gt;” di Tony Soper, per generalizzare la script e renderla un pò più flessibile nell’uso.&lt;/p&gt;  &lt;p&gt;In particolare la mia versione accetta in input una lista di nomi di host default: (“'.” per il localhost), estrae dal registry di ciascun host la versione di IS disponibile e produce un elenco di VM in esecuzione, con la rispettiva versione, indicando se è “Up to date” o meno. Le VM da analizzare possono essere filtrate per wildcard sul nome (es: PROD%, WinXP%, …), usando il secondo parametro opzionale (di default le estrae tutte).&lt;/p&gt;  &lt;p&gt;&lt;font face="courier new,courier" size="3"&gt;.\Check-HvIs.ps1 HV01 %2003%&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;estrae la versione degli IS per le VM che contengono “2003” nel proprio nome, sull’host HV01.&lt;/p&gt;  &lt;p&gt;   &lt;br&gt;L’output è un array di oggetti Powershell, che può essere filtrata, sortata, formattata “as usual”. Ad esempio:&lt;/p&gt;  &lt;p&gt;&lt;font face="courier new,courier" size="3"&gt;.\Check-HvIs.ps1 HV01,HV02 | ? {$_.IsVmGuestUptodate -eq $False}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;fornisce l’elenco delle VM che non hanno gli IS aggiornati al proprio host.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;  &lt;p&gt;Quì il &lt;a href="http://pulsarit.net/cs/files/folders/scripts/entry132.aspx" title="Download Check-HvIs.ps1"&gt;download di Check-HvIs.ps1&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ciao, Claudio&lt;/p&gt;&lt;img src="http://pulsarit.net/cs/aggbug.aspx?PostID=133" width="1" height="1"&gt;</description><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/PowerShell/default.aspx">PowerShell</category><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/Hyper-V/default.aspx">Hyper-V</category><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/Windows+Server+2008+R2/default.aspx">Windows Server 2008 R2</category></item><item><title>Hotfix per Hyper-V in Windows Server 2008 R2 e backup via VSS</title><link>http://pulsarit.net/cs/blogs/claudiog/archive/2010/06/29/hotfix-per-hyper-v-e-backup-via-vss.aspx</link><pubDate>Tue, 29 Jun 2010 16:21:00 GMT</pubDate><guid isPermaLink="false">d806d591-cae8-4839-ac9f-5825260148f9:129</guid><dc:creator>claudiog</dc:creator><slash:comments>0</slash:comments><comments>http://pulsarit.net/cs/blogs/claudiog/comments/129.aspx</comments><wfw:commentRss>http://pulsarit.net/cs/blogs/claudiog/commentrss.aspx?PostID=129</wfw:commentRss><description>&lt;p&gt;Microsoft &lt;a href="http://support.microsoft.com/kb/982210/en-us" title="Microsoft kb982210" target="_blank"&gt;ha rilasciato una hotfix&lt;/a&gt; per risolvere un problema piuttosto subdolo, che si innesca nell'&lt;b&gt;uso di VSS&lt;/b&gt; per fare backup di Virtual Machines su &lt;b&gt;host Windows Server 2008 R2 / Windows Hyper-V Server 2008 R2&lt;/b&gt;. In breve, il VSS provider crea un nuovo device/volume per ciascuno shapshot effettutato, non rimuovendo mai queste informazioni dal registry, che crescerà a dismisura.&lt;br&gt;&lt;/p&gt;&lt;p&gt;Ambienti partciolamente a rischio sono quelli basati su DPM 2007/2010, specie se i numeri di VM/VHD e la frequenza degli snapshot è elevata. Al limite (quando il numero di volumi supera qualche migliaio), l'host potrevbbe apparire "hung" al boot, o non completare mai il boot).&lt;br&gt;&lt;/p&gt;&lt;p&gt;Il bug &lt;b&gt;NON riguarda Hyper-V V1 di Windows Server 2008&lt;/b&gt;, anche se alcuni post su Internet affermano il contrario.&lt;/p&gt;&lt;p&gt;L'articolo (KB982210) pubblicato, ha diversi errori e imprecisioni, che rendono la comprensione e l'dentificazione del problema non proprio trasparente e semplice.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Le chiavi del registry indicate, sono o imprecise (la prima suggeria non cambia mai nel tempo) o sono assolutamete specifiche di un server e potreste non ritrovarle affatto sul vostro host&lt;/li&gt;&lt;li&gt;Alcuni rifermenti sono a '&lt;i&gt;ControlSet001&lt;/i&gt;', guardate invece sempre dentro a '&lt;i&gt;CurrentControlSet&lt;/i&gt;'&lt;/li&gt;&lt;li&gt;Il titolo dell'articolo parla di "&lt;i&gt;&lt;u&gt;after you back up the data on all the disks of the computer in Windows Server 2008 R2 if the computer runs some virtual machines&lt;/u&gt;&lt;/i&gt;", in realtà il problema si presenta SEMPRE, non solo se salvate TUTTI i dischi, basta innescare il VSS Provider per Hyper-V anche solo per un System State di una VM&lt;br&gt;&lt;/li&gt;&lt;li&gt;L'articolo indica un supposto comando "&lt;span class="Apple-style-span" style="border-collapse:separate;font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;font-size:medium;"&gt;&lt;span class="Apple-style-span" style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;line-height:16px;"&gt;&lt;b&gt;devnodeclean&lt;/b&gt;&lt;span class="Apple-converted-space"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;", che NON esiste&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;Potrebbe essere un tool da richiedere al PSS, o da compilarsi da soli usando il codice di esempio nell'altra KB linkata ...ma non è chiaro e&lt;u&gt; francamente mi pare un pò troppo&lt;/u&gt; !&lt;br&gt;&lt;/blockquote&gt;&lt;p&gt;Per semplificarmi la vita, ho scritto una piccola script Powershell 2.0, per verificare il numero di Volumi/Device presenti su una lista di hosts Hyper-V. Ha come prerequisito la funzionalità di Remoting, basata su WinRM, che deve essere configurata sugli host Hyper-V (anche via GPO).&lt;/p&gt;&lt;p&gt;Non si tratta di una script particolarmente "smart" o sofisticata, ma magari vi può servire. Va modificata per fornire la lista di host Hyper-V 2 si cui eseguire il controllo, per definire le credenziali di default per la connessione.&lt;/p&gt;&lt;p&gt;Quindi se a distanza di qualche giorno, osservate un incremento costante dei numeri riportati, dovete installare la hotfix. La fix però NON ripulisce il registry delle entry precedenti, quindi o vi procurate la "&lt;i&gt;fantomatica&lt;/i&gt;" utility "&lt;span class="Apple-style-span" style="border-collapse:separate;font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;font-size:medium;"&gt;&lt;span class="Apple-style-span" style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;line-height:16px;"&gt;&lt;b&gt;devnodeclean&lt;/b&gt;&lt;span class="Apple-converted-space"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;" o usate il &lt;a href="http://garysgambit.blogspot.com/2010/05/windows-2008-hyper-v-vss-backup-bug.html" title="Windows 2008 Hyper-V / VSS / Backup Bug Part III" target="_blank"&gt;suggerimento pubblicato qui&lt;/a&gt;, sull'uso del vecchio "&lt;b&gt;regchk&lt;/b&gt;".&lt;/p&gt;&lt;p&gt;Hyper-V comincia ad avere bisogno di un rollup !&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Ecco la script: &lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier" size="3"&gt;$Cred = Get-credential DOMAIN\AdmAccount&lt;br&gt;$HVhosts = @("HVNODE1","HVNODE2")&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Potrebbe essere un 'get-content serverlist.txt'&lt;br&gt;&lt;br&gt;$HvHosts | % {&lt;br&gt;&lt;br&gt;&amp;nbsp; Invoke-Command -ComputerName $_ -Cred $Cred -ScriptBlock {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #$RegKeys = 'Enum\SCSI\Disk&amp;amp;Ven_Msft&amp;amp;Prod_Virtual_Disk','Enum\STORAGE\Volume','Control\DeviceClasses\{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $RegKeys = @('Enum\STORAGE\Volume','Control\DeviceClasses\{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}')&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PushD 'HKLM:\System\CurrentControlSet'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $RegKeys | % {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host $Env:Computername,$_, (dir $_).Count&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PopD&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;}&lt;/font&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;Produrrà un output di questo tipo:&lt;/p&gt;&lt;p&gt;HVNODE1 Enum\STORAGE\Volume 768&lt;br&gt;HVNODE1 Control\DeviceClasses\{53f5630d-b6bf-11d0-94f2-00a0c91efb8b} 774&lt;br&gt;HVNODE2 Enum\STORAGE\Volume 775&lt;br&gt;HVNODE2 Control\DeviceClasses\{53f5630d-b6bf-11d0-94f2-00a0c91efb8b} 783&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://pulsarit.net/cs/aggbug.aspx?PostID=129" width="1" height="1"&gt;</description><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/PowerShell/default.aspx">PowerShell</category><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/DPM/default.aspx">DPM</category><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/Hyper-V/default.aspx">Hyper-V</category><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/Windows+Server+2008+R2/default.aspx">Windows Server 2008 R2</category></item><item><title>Inactivate automatico di alert in DPM 2007</title><link>http://pulsarit.net/cs/blogs/claudiog/archive/2009/06/10/inactivate-automatico-di-alert-in-dpm-2007.aspx</link><pubDate>Wed, 10 Jun 2009 16:49:00 GMT</pubDate><guid isPermaLink="false">d806d591-cae8-4839-ac9f-5825260148f9:117</guid><dc:creator>claudiog</dc:creator><slash:comments>0</slash:comments><comments>http://pulsarit.net/cs/blogs/claudiog/comments/117.aspx</comments><wfw:commentRss>http://pulsarit.net/cs/blogs/claudiog/commentrss.aspx?PostID=117</wfw:commentRss><description>&lt;p&gt;&lt;b&gt;Data Protection Manager 2007&lt;/b&gt; (DPM), pur essendo dotato di cmdlets specifiche per Powershell, è piuttosto incompleto.   &lt;br&gt;Ad esempio non ci sono cmdlets per gestire i &lt;i&gt;jobs&lt;/i&gt;, &lt;i&gt;alerts&lt;/i&gt;, ecc. (e sul grado di documentazione di quello che c’è … lasciamo perdere …).&lt;/p&gt;
  
&lt;p&gt;La domanda su come poter risolvere (inattivare) gli alert in modo batch è stata posta diverse volte sui &lt;a href="http://groups.google.com/group/microsoft.public.dataprotectionmanager/browse_thread/thread/a7b26d249f9c92ed/52fee856f4ee35f3" target="_blank"&gt;DPM Forum&lt;/a&gt;, ma anche i membri del Team DPM hanno affermato che non esiste un modo per farlo via Powershell.    &lt;br&gt;Qualcuno in giro per il web, pur di evitare di inattivare "uno-a-uno" (sì, la DPM management console NON supporta la selezione multipla !), si è pure lanciato in temerarie operazioni direttamente sul DB SQL ($brividi = $TRUE).&lt;/p&gt;
  
&lt;p&gt;In realtà &lt;b&gt;un metodo esiste&lt;/b&gt; e una volta &lt;i&gt;“scoperto”&lt;/i&gt; è pure banale … ma &lt;u&gt;probabilmente NON è supportato&lt;/u&gt; (anche se lo uso da diverso tempo in ambienti di produzione e non ha mai causato problemi).&lt;/p&gt;
  
&lt;p&gt;&lt;b&gt;DISCLAIMER: usatelo a vostro rischio – USE AT YOUR OWN RISK&lt;/b&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#009900"&gt;# Ci connettiamo al server DPM   &lt;/font&gt;&lt;br&gt;$Dpm = connect-dpmserver $Env:Computername&lt;/font&gt;&lt;/p&gt;
  
&lt;p&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#009900"&gt;#Otteniamo un oggetto AlertController   &lt;br&gt;&lt;/font&gt;$Ac = $Dpm.Get_AlertController()&lt;/font&gt;&lt;/p&gt;
  
&lt;p&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#009900"&gt;# Estraiamo solo i Pending Alerts   &lt;br&gt;&lt;/font&gt;$AC.RefreshAlerts( $False) &lt;/font&gt;&lt;/p&gt;
  
&lt;p&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#009900"&gt;# TA-DAAA … inattiviamoli tutti   &lt;br&gt;&lt;/font&gt;$AC.ActiveAlerts | % { $_.ResolveAlert()}&lt;/font&gt;&lt;/p&gt;

&lt;hr&gt;
&lt;p&gt;&lt;br&gt;La &lt;b&gt;potenza di .Net applicata a Powershell&lt;/b&gt; (o viceversa &lt;img src="http://www.pulsarit.net/cs/emoticons/emotion-1.gif" alt="Smile" /&gt; )&lt;/p&gt;
  
&lt;p&gt;Ciao, Claudio&lt;/p&gt;&lt;img src="http://pulsarit.net/cs/aggbug.aspx?PostID=117" width="1" height="1"&gt;</description><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/PowerShell/default.aspx">PowerShell</category><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/DPM/default.aspx">DPM</category></item><item><title>WSUS PowerToolkit 1.2</title><link>http://pulsarit.net/cs/blogs/claudiog/archive/2009/06/10/wsus-powertoolkit-1-2.aspx</link><pubDate>Wed, 10 Jun 2009 16:30:00 GMT</pubDate><guid isPermaLink="false">d806d591-cae8-4839-ac9f-5825260148f9:115</guid><dc:creator>claudiog</dc:creator><slash:comments>1</slash:comments><comments>http://pulsarit.net/cs/blogs/claudiog/comments/115.aspx</comments><wfw:commentRss>http://pulsarit.net/cs/blogs/claudiog/commentrss.aspx?PostID=115</wfw:commentRss><description>&lt;p&gt;Ho aggiornato il &lt;a href="http://www.pulsarit.net/cs/files/folders/scripts/entry106.aspx"&gt;&lt;b&gt;WSUS PowerToolkit&lt;/b&gt;&lt;/a&gt; alla versione &lt;b&gt;1.2&lt;/b&gt;, includendo due nuove script.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Wsus-DeclineAllObsolete.ps1&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Consente di declinare TUTTI gli update (usate a vostro rischio) che sono indicati come obsoleti (Superseded) nel database di WSUS.    &lt;br&gt;Questo può essere utile nei casi di pulizia massiva di una installazione WSUS, dopo essersi accertati di aver approvato però gli aggiornamenti successivi.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Wsus-DeclineSupersededBy.ps1&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Questa script ricerca gli update resi obsoleti da uno specifico aggiornamento (descrizione - passato come parametro stringa, case insensitive), che non siano già declinati e li declina.    &lt;br&gt;Questo è utile per fare il decline dei soli update sotituiti da uno successivo. Si può passare una stringa “generica”, come ad esempio 'Windows Malicious Software Removal Tool', o 'update rollup for activex killbits', per inculdere una intera famiglia di aggiornamenti.&lt;/p&gt;  &lt;p&gt;Ho anche aggiornato e fixato alcune delle scritp precedentemente rilasciate.&lt;/p&gt;  &lt;p&gt;Have fun,    &lt;br&gt;Claudio&lt;/p&gt;&lt;img src="http://pulsarit.net/cs/aggbug.aspx?PostID=115" width="1" height="1"&gt;</description><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/PowerShell/default.aspx">PowerShell</category><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/WSUS/default.aspx">WSUS</category><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/Scripting/default.aspx">Scripting</category></item><item><title>WSUS PowerToolkit 1.1</title><link>http://pulsarit.net/cs/blogs/claudiog/archive/2009/02/12/wsus-powertoolkit-1-1.aspx</link><pubDate>Thu, 12 Feb 2009 18:33:00 GMT</pubDate><guid isPermaLink="false">d806d591-cae8-4839-ac9f-5825260148f9:113</guid><dc:creator>claudiog</dc:creator><slash:comments>0</slash:comments><comments>http://pulsarit.net/cs/blogs/claudiog/comments/113.aspx</comments><wfw:commentRss>http://pulsarit.net/cs/blogs/claudiog/commentrss.aspx?PostID=113</wfw:commentRss><description>&lt;p&gt;Ho aggiornato il &lt;a href="http://www.pulsarit.net/cs/files/folders/scripts/entry106.aspx"&gt;&lt;b&gt;WSUS &lt;b&gt;PowerToolkit&lt;/b&gt;&lt;/b&gt;&lt;/a&gt; alla versione &lt;b&gt;1.1&lt;/b&gt;, includendo due nuove script.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Wsus-Sync.ps1&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Consente di eseguire una sync di WSUS, con notifica via mail dell’esito.    &lt;br&gt;Questo può essere utile in quei casi in cui lo scheduling rigido di WSUS, non risolva le vostre esigenze. Quindi si può schedulare la script con il task scheduler di Windows, disattivando la sincronizzazione automatica nelle opzioni di WSUS.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Wsus-PendingReboot.ps1&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Questa script ricerca eventuali computer nel database di WSUS che siano in stato di Pending Reboot, notificando la lista via mail.   &lt;br&gt;Questo è utile per evitare che un computer (server) resti per lungo tempo in stato di pending dopo aver applicato le patch manualmente, o dove si previene il reboot da GPO quando un utente ha fatto logon.&lt;/p&gt;  &lt;p&gt;Entrambe le script usano&lt;b&gt; Wsus-SendMail.ps1&lt;/b&gt;, per recuperare destinatario e server SMTP dalle opzioni di WSUS.&lt;/p&gt;  &lt;p&gt;Have fun,   &lt;br&gt;Claudio&lt;/p&gt;  &lt;h2&gt;Nota:&lt;/h2&gt;  &lt;p&gt;Nuova versione disponibile su &lt;a href="http://www.pulsarit.net/cs/blogs/claudiog/archive/2009/06/10/wsus-powertoolkit-1-2.aspx" title="http://www.pulsarit.net/cs/blogs/claudiog/archive/2009/06/10/wsus-powertoolkit-1-2.aspx"&gt;http://www.pulsarit.net/cs/blogs/claudiog/archive/2009/06/10/wsus-powertoolkit-1-2.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://pulsarit.net/cs/aggbug.aspx?PostID=113" width="1" height="1"&gt;</description><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/PowerShell/default.aspx">PowerShell</category><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/WSUS/default.aspx">WSUS</category><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/Scripting/default.aspx">Scripting</category></item><item><title>Powershell News</title><link>http://pulsarit.net/cs/blogs/claudiog/archive/2008/06/15/powershell-news.aspx</link><pubDate>Sat, 14 Jun 2008 22:52:00 GMT</pubDate><guid isPermaLink="false">d806d591-cae8-4839-ac9f-5825260148f9:95</guid><dc:creator>claudiog</dc:creator><slash:comments>0</slash:comments><comments>http://pulsarit.net/cs/blogs/claudiog/comments/95.aspx</comments><wfw:commentRss>http://pulsarit.net/cs/blogs/claudiog/commentrss.aspx?PostID=95</wfw:commentRss><description>&lt;p&gt;Su &lt;b&gt;CodePlex&lt;/b&gt; è disponibile un nuovo Provider per Powershell, scritto da &lt;b&gt;Oisin Grehan&lt;/b&gt; (Microsoft MVP), già autore di PSEventing (PowerShell Eventing) e developer nel gruppo di &lt;a href="http://www.codeplex.com/PowerShellCX"&gt;PowerShell Community Extensions&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Si tratta del &lt;a href="http://www.codeplex.com/psmobile"&gt;PowerShell Windows Mobile Provider&lt;/a&gt;, che consente di accedere sia in modo interattivo che programmatico a &lt;b&gt;dispositivi Windows Mobile da PowerShell&lt;/b&gt;.    &lt;br&gt;Molte le attività che si possono scriptare: dalla &lt;b&gt;gestione del file system&lt;/b&gt;, alla &lt;b&gt;conversione&lt;/b&gt; di file, l'esecuzione di &lt;b&gt;processi&lt;/b&gt;, alla estrazione di informazioni sul dispositivo, ecc.    &lt;br&gt;Si tratta ancora di una Beta, ma di certo un bel tool. &lt;u&gt;Bravo Oisin !&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Un altro interessante spunto ci viene da &lt;b&gt;PowerShell Tunnel&lt;/b&gt;, &lt;a href="http://code.msdn.microsoft.com/PowerShellTunnel" title="PowerShell Tunnel sulla MSDN Code Gallery" target="_blank"&gt;disponibile sulla MSDN Code Gallery&lt;/a&gt;.    &lt;br&gt;Applicazione decisamente interessante per &lt;b&gt;accedere da una CLI PowerShell agli oggetti esposti in una applicazione .Net&lt;/b&gt;, hostata appostamente in un "runspace" di PowerShell e raggiunta tramite l'infrastruttura &lt;i&gt;WCF&lt;/i&gt;.    &lt;br&gt;Lo scopo ? &lt;b&gt;Debugging, inspection&lt;/b&gt; ... ma anche &lt;b&gt;esecuzione di metodi e modifica di proprietà&lt;/b&gt; ... tutto unito alla potenza di PowerShell. Una bella idea di Matthew Hobbs.&lt;/p&gt;  &lt;p&gt;Vi segnalo anche un &lt;a href="http://www.microsoft.com/technet/scriptcenter/whatsnew.xml" title="TechNet Script Center - Feed RSS sulle nuove aggiunte" target="_blank"&gt;feed RSS&lt;/a&gt;, per essere sempre aggiornati sulla pubblicazione di nuovi contenuti (&lt;i&gt;scripts&lt;/i&gt;) sul &lt;b&gt;TechNet Script Center&lt;/b&gt;.&lt;/p&gt;&lt;img src="http://pulsarit.net/cs/aggbug.aspx?PostID=95" width="1" height="1"&gt;</description><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/PowerShell/default.aspx">PowerShell</category><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/Scripting/default.aspx">Scripting</category></item><item><title>DPM 2007 e il Consistency Check</title><link>http://pulsarit.net/cs/blogs/claudiog/archive/2008/06/03/dpm-2007-e-il-consistency-check.aspx</link><pubDate>Tue, 03 Jun 2008 00:01:00 GMT</pubDate><guid isPermaLink="false">d806d591-cae8-4839-ac9f-5825260148f9:90</guid><dc:creator>claudiog</dc:creator><slash:comments>0</slash:comments><comments>http://pulsarit.net/cs/blogs/claudiog/comments/90.aspx</comments><wfw:commentRss>http://pulsarit.net/cs/blogs/claudiog/commentrss.aspx?PostID=90</wfw:commentRss><description>&lt;p&gt;&lt;b&gt;Data Protection Manager 2007&lt;/b&gt; prevede un meccanismo di verifica dell'integrità di una Replica (un "backup" in vecchia terminologia) di un DataSource, chiamato &lt;b&gt;Consistency Check&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;In questo articolo del &lt;b&gt;Core Team&lt;/b&gt; proprio &lt;a href="http://blogs.technet.com/askcore/archive/2008/05/29/data-protection-manager-what-is-a-consistency-check-and-what-could-cause-it-to-fail.aspx" title="DPM 2007 Consistency Check" target="_blank"&gt;sul CC di DPM 2007&lt;/a&gt;, trovate alcune informazioni più dettagliate.&lt;/p&gt;  &lt;p&gt;Poichè sono alle prese con alcuni &lt;i&gt;problemini&lt;/i&gt;, ero alla ricerca di procedure di automazione del CC ed ho trovato sul blog del Team di DPM questa &lt;a href="http://blogs.technet.com/dpm/archive/2008/04/10/dpm-powershell-script-invoking-a-consistency-check.aspx" target="_blank"&gt;script PowerShell per invocare un Consistency Check su un DataSource&lt;/a&gt; di DPM 2007.&lt;br&gt;&lt;/p&gt;  &lt;p&gt;La script, pur essendo utile, &lt;u&gt;ha un difetto di design&lt;/u&gt;: esegue CC per NOME del DataSource all'interno di un Protection Group ... ma non gestisce il fatto che il NOME può essere duplicato all'interno di un PG (ES: salvate il disco "C:\" di più server nello stesso PG, il SystemState, ecc.).&lt;/p&gt;  &lt;p&gt;Ho modificato la script per renderla un pò &lt;i&gt;più tollerante&lt;/i&gt; e gestire questo caso (&lt;i&gt;affatto infrequente&lt;/i&gt;), oltre ad averla un pò rivista. Appena ho un pò di tempo (bisogna anche fatturare &lt;img src="http://www.pulsarit.net/cs/emoticons/emotion-5.gif" alt="Wink" /&gt;), ne scriverò una versione che accetti un DataSource *specifico* (Es: SystemState del SERVER01).&lt;/p&gt;  &lt;p&gt;Ecco la script: &lt;a href="http://www.pulsarit.net/cs/files/folders/scripts/entry91.aspx" title="DPM-ConsistencyCheck2.ps1"&gt;DPM-ConsistencyCheck2.ps1&lt;br&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ciao, Claudio&lt;/p&gt;&lt;img src="http://pulsarit.net/cs/aggbug.aspx?PostID=90" width="1" height="1"&gt;</description><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/PowerShell/default.aspx">PowerShell</category><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/System+Center/default.aspx">System Center</category><category domain="http://pulsarit.net/cs/blogs/claudiog/archive/tags/DPM/default.aspx">DPM</category></item></channel></rss>