<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mostly Anything &#187; Powershell</title>
	<atom:link href="http://blog.devnull.ch/tag/powershell/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.devnull.ch</link>
	<description>IT Blog über VMWare, SQL, Storage, Security und mehr.</description>
	<lastBuildDate>Thu, 20 Oct 2011 12:33:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Resolution State in SCOM 2007 R2 automatisch setzen</title>
		<link>http://blog.devnull.ch/2011/10/17/resolution-state-in-scom-2007-r2-automatisch-setzen/</link>
		<comments>http://blog.devnull.ch/2011/10/17/resolution-state-in-scom-2007-r2-automatisch-setzen/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 12:33:23 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Microsoft Sql Server]]></category>
		<category><![CDATA[Operations Manager]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[OpsMgr]]></category>
		<category><![CDATA[SCOM]]></category>

		<guid isPermaLink="false">http://blog.devnull.ch/?p=269</guid>
		<description><![CDATA[Bei einer SCOM Umgebung eines Kunden setzen wir verschiedene Resolution States für die verschiedenen Gruppen (Operations, Application Support, DBAs etc) ein. Die Alerts, die vom SQL Management Pack generiert werden sollen nun direkt den entsprechenden Resolution State bekommen, damit sie in der View der entsprechenden Gruppe landen. Das ganze können wir folgendermassen lösen. Wir erstellen [...]]]></description>
			<content:encoded><![CDATA[<p>Bei einer SCOM Umgebung eines Kunden setzen wir verschiedene Resolution States für die verschiedenen Gruppen (Operations, Application Support, DBAs etc) ein. Die Alerts, die vom SQL Management Pack generiert werden sollen nun direkt den entsprechenden Resolution State bekommen, damit sie in der View der entsprechenden Gruppe landen.</p>
<p>Das ganze können wir folgendermassen lösen. Wir erstellen einen Notification Command Channel, erstellen einen Subscriber und eine Subscription (nur für neue Alerts) und führen dann ein Powershell Script aus, dass den entsprechenden Resolution Code setzt.</p>
<p>Das Script sieht folgendermassen aus:</p>
<pre class="brush: powershell; title: ; notranslate">
Param (
	[string]$RMS = &quot;RootManagementServer&quot;
)
# Start the OpsMgr PSSnapin
Add-PSSnapin &quot;Microsoft.EnterpriseManagement.OperationsManager.Client&quot; -ErrorVariable errSnapin ;
Set-Location &quot;OperationsManagerMonitoring::&quot; -ErrorVariable errSnapin ;
New-ManagementGroupConnection -ConnectionString:$RMS -ErrorVariable errSnapin ;
set-location $RMS -ErrorVariable errSnapin ;

# Get all new (0) alerts where the MonitoringObjectFullName starts with Microsoft.SQLServer
$alerts = Get-Alert | ?{$_.ResolutionState -eq &quot;0&quot; -and $_.MonitoringObjectFullName -like &quot;Microsoft.SQLServer*&quot;}

foreach($alert in $alerts) {
	#Set the resolution state to DBA Group (15)
	$alert.ResolutionState = &quot;15&quot;
	$alert.Update(&quot;&quot;)
}

# Remove the OpsMgr PSSnapin
Remove-PSSnapin Microsoft.EnterpriseManagement.OperationsManager.Client
</pre>
<p>Wir verbinden uns zuerst mit dem RMS und holen alle Alerts mit Resolutio State von 0 (NEW). Wir können hier auch noch dem MonitoringObjectFullName filtern, der mit Microsoft.SQLServer beginnt (alle Alerts vom SQL Server MP).<br />
Bei diesen Alerts setzen wir den Resolution State dann auf die gewüschte Zahl.</p>
<p>Jetzt müssen wir SCOM noch so konfigurieren, dass dieses Script bei den neuen Alerts ausgeführt wird:</p>
<table border="1">
<tbody>
<tr>
<td>Neuen Notification Channel erstellen:<br />
Administration &#8211; Notifications &#8211; Channels &#8211; New Channel<br />
Namen und Beschreibung ausfüllen. Unter Settings bei Full Path den Pfad zur Powershell angeben. Bei Command Line Parameters das eigentliche Script aufführen</td>
<td><a href="http://blog.devnull.ch/wp-content/uploads/2011/10/Screenshot-2011-10-17_11.38.18.png"><img class="alignnone size-medium wp-image-285" title="Screenshot-2011-10-17_11.38.18" src="http://blog.devnull.ch/wp-content/uploads/2011/10/Screenshot-2011-10-17_11.38.18-300x263.png" alt="Command Notification Channel" width="300" height="263" /></a></td>
</tr>
<tr>
<td>Dann einen Subscriber erstellen mit dem Channel Type &#8220;Command&#8221; und useren Channel, den wir vorher erstellt haben.</td>
<td><a href="http://blog.devnull.ch/wp-content/uploads/2011/10/Subscriber_Address-2011-10-17_13.11.58.png"><img class="alignnone size-medium wp-image-286" title="Subscriber_Address-2011-10-17_13.11.58" src="http://blog.devnull.ch/wp-content/uploads/2011/10/Subscriber_Address-2011-10-17_13.11.58-300x263.png" alt="Subscriber" width="300" height="263" /></a></td>
</tr>
<tr>
<td>Nun mit einer Subscription das ganze zusammenfügen. Wir wählen unter Criteria nur die Alerts mit Resolution State 0 aus. Wir wollen ja, dass nur neue Alerts bearbeitet werden.</td>
<td><a href="http://blog.devnull.ch/wp-content/uploads/2011/10/Notification_Subscription_Wizard-2011-10-17_13.13.00.png"><img class="alignnone size-medium wp-image-287" title="Notification_Subscription_Wizard-2011-10-17_13.13.00" src="http://blog.devnull.ch/wp-content/uploads/2011/10/Notification_Subscription_Wizard-2011-10-17_13.13.00-300x190.png" alt="Subscription" width="300" height="190" /></a></td>
</tr>
<tr>
<td>Als Subscriber und Channel die vorher erstellten auswählen und ohne Alert Aging erstellen</td>
<td><a href="http://blog.devnull.ch/wp-content/uploads/2011/10/Notification_Subscription_Wizard-2011-10-17_13.13.40.png"><img class="alignnone size-medium wp-image-288" title="Notification_Subscription_Wizard-2011-10-17_13.13.40" src="http://blog.devnull.ch/wp-content/uploads/2011/10/Notification_Subscription_Wizard-2011-10-17_13.13.40-300x190.png" alt="Subscription Channel" width="300" height="190" /></a></td>
</tr>
</tbody>
</table>
<p>Nun wird bei jedem neuen Alert das Script ausgeführt und falls es ein Alert vom SQL MP ist der entsprechende Resolution State gesetzt. Natürlich können wir im Script auch noch weitere States für andere MPs setzen.</p>
<p>Die DBAs bekommen dann noch eine neue Alert View, bei der nur die Alerts mit dem State 15 angezeigt werden und sind happy, da sie die restlichen Alerts, die sie nicht interessieren nicht sehen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.devnull.ch/2011/10/17/resolution-state-in-scom-2007-r2-automatisch-setzen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alle VMWare Snapshots in Powershell auflisten</title>
		<link>http://blog.devnull.ch/2010/07/05/alle-vmware-snapshots-in-powershell-auflisten/</link>
		<comments>http://blog.devnull.ch/2010/07/05/alle-vmware-snapshots-in-powershell-auflisten/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 10:46:41 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Powershell]]></category>
		<category><![CDATA[VMWare]]></category>
		<category><![CDATA[Snapshots]]></category>

		<guid isPermaLink="false">http://blog.devnull.ch/?p=165</guid>
		<description><![CDATA[Man braucht immer wieder mal eine Liste aller Snapshots. Das ist mit vSphere PowerCLI auch ganz einfach Get-VM &#124; Sort Name &#124; Get-Snapshot &#124; Where { $_.Name.Length -gt 0 } &#124; Select VM,Name,Description,Created Das kann man natürlich auch auf ein Datacenter einschränken Get-Datacenter -Name "Datacenter Name" &#124; Get-VM &#124; Sort Name &#124; Get-Snapshot &#124; Where [...]]]></description>
			<content:encoded><![CDATA[<p>Man braucht immer wieder mal eine Liste aller Snapshots. Das ist mit vSphere PowerCLI auch ganz einfach</p>
<pre class="brush:ps">
Get-VM | Sort Name | Get-Snapshot |
Where { $_.Name.Length -gt 0 } |
Select VM,Name,Description,Created
</pre>
<p>Das kann man natürlich auch auf ein Datacenter einschränken</p>
<pre class="brush:ps">
Get-Datacenter -Name "Datacenter Name" | Get-VM |
Sort Name | Get-Snapshot |
Where { $_.Name.Length -gt 0 } |
Select VM,Name,Description,Created
</pre>
<p>Oder auf einen Cluster</p>
<pre class="brush:ps">
Get-Cluster -Name "Cluster Name" | Get-VM |
Sort Name | Get-Snapshot |
Where { $_.Name.Length -gt 0 } |
Select VM,Name,Description,Created
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.devnull.ch/2010/07/05/alle-vmware-snapshots-in-powershell-auflisten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Powershell Script um das Erzwingen eines Passwortwechsels zu deaktivieren</title>
		<link>http://blog.devnull.ch/2009/07/27/powershell-script-um-das-erzwingen-eines-passwortwechsels-zu-deaktivieren/</link>
		<comments>http://blog.devnull.ch/2009/07/27/powershell-script-um-das-erzwingen-eines-passwortwechsels-zu-deaktivieren/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 10:32:20 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[AD]]></category>
		<category><![CDATA[Powershell]]></category>

		<guid isPermaLink="false">http://blog.devnull.ch/?p=115</guid>
		<description><![CDATA[Wir haben ein paar User ins Active Directory importiert. So rund 100 Stück. Dabei wurde die Option &#8220;User Must Change Passwort At Next Logon&#8221; gewählt und im Nachhinein ist das nicht gewünscht. Nun könnte man dies übers GUI machen. In einem halben Tag sollte man das schaffen. Glücklicherweise habe ich momentan gerade einen Praktikanten der [...]]]></description>
			<content:encoded><![CDATA[<p>Wir haben ein paar User ins Active Directory importiert. So rund 100 Stück. Dabei wurde die Option &#8220;User Must Change Passwort At Next Logon&#8221; gewählt und im Nachhinein ist das nicht gewünscht. Nun könnte man dies übers GUI machen. In einem halben Tag sollte man das schaffen. Glücklicherweise habe ich momentan gerade einen Praktikanten der dies erledigen kann. <img src='http://blog.devnull.ch/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Scherz beiseite, ich lasse ihn das natürlich nicht per Hand machen. Dafür gibts ja PowerShell. Zuerst einmal stellen wir sicher, dass wir die Quest Active Directory Commandlets haben. Die sind äusserst praktisch und erst noch gratis:</p>
<p><a title="PowerShell Command for Active Directory" href="http://www.quest.com/powershell/activeroles-server.aspx" target="_blank">Power Shell Commands for Active Directory</a></p>
<p>Dann eine Powershell öffnen (eventuell als RunAs wenn der momentane User keine entsprechende Berechtigung auf dem AD hat).</p>
<blockquote><p>&gt; $OU = &#8220;mydomain.com/ou&#8221;<br />
&gt; get-QADUser -searchRoot $OU -searchScope &#8216;OneLevel&#8217; |  Set-QADUser  -userMustChangePassword $false</p></blockquote>
<p>Das wars. Nun ist die Option &#8220;User must change password at next logon&#8221; für die User in der OU nicht mehr gesetzt. Natürlich kann die Option auch für die User gesetzt werden. Einfach anstelle von $false $true einsetzten. Nun kann der Praktikant sich wieder wichtigen Sachen zuwenden und weiter rumsurfen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.devnull.ch/2009/07/27/powershell-script-um-das-erzwingen-eines-passwortwechsels-zu-deaktivieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

