<?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>Anwendungen &#8211; Haikos Blog</title>
	<atom:link href="https://www.hertes.net/tag/anwendungen/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.hertes.net</link>
	<description>Blog von Haiko Hertes zu allen Themen rund um Microsoft, Cloud und Datacenter</description>
	<lastBuildDate>Wed, 27 Apr 2016 17:14:28 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>SCCM 2012 R2 &#8211; E-Mails f&#252;r Softwareanforderungen (Umfangreicher)</title>
		<link>https://www.hertes.net/2016/02/sccm-2012-r2-e-mails-fr-softwareanforderungen-umfangreicher/</link>
					<comments>https://www.hertes.net/2016/02/sccm-2012-r2-e-mails-fr-softwareanforderungen-umfangreicher/#respond</comments>
		
		<dc:creator><![CDATA[Haiko]]></dc:creator>
		<pubDate>Fri, 05 Feb 2016 17:36:00 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[System Center]]></category>
		<category><![CDATA[System Center Configuration Manager]]></category>
		<category><![CDATA[Anwendungen]]></category>
		<category><![CDATA[Configuration Manager]]></category>
		<category><![CDATA[Genehmigung]]></category>
		<category><![CDATA[SCCM]]></category>
		<category><![CDATA[Workflow]]></category>
		<guid isPermaLink="false">http://www.hertes.net/?p=3117</guid>

					<description><![CDATA[In einem älteren Artikel habe ich mich schon einmal mit der Frage beschäftigt, wie man neue Genehmigungsanforderungen für Software (Anwendungen) in System Center Configuration Manager per Mail an den Admin melden kann. Was aber, wenn nicht (nur) der Admin eine Mail erhalten soll, sondern z.B. auch der Vorgesetzte des jeweiligen Benutzers, der die Software angefordert hat? Und was ist mit dem Benutzer selbst? Es wäre doch gut, wenn dieser bei Genehmigung/Ablehnung auch informiert wird?! Das Ganze lässt sich natürlich wunderbar per PowerShell lösen. Damit nun aber nicht ein Prozess o.ä. permanent laufen muss, wäre es sinnvoll, dieses Skript z.B. nur&#8230;]]></description>
										<content:encoded><![CDATA[<p>In <a href="http://www.hertes.net/?p=2514">einem älteren Artikel</a> habe ich mich schon einmal mit der Frage beschäftigt, wie man neue Genehmigungsanforderungen für Software (Anwendungen) in System Center Configuration Manager per Mail an den Admin melden kann.</p>
<p>Was aber, wenn nicht (nur) der Admin eine Mail erhalten soll, sondern z.B. auch der Vorgesetzte des jeweiligen Benutzers, der die Software angefordert hat? Und was ist mit dem Benutzer selbst? Es wäre doch gut, wenn dieser bei Genehmigung/Ablehnung auch informiert wird?!</p>
<p>Das Ganze lässt sich natürlich wunderbar per PowerShell lösen. Damit nun aber nicht ein Prozess o.ä. permanent laufen muss, wäre es sinnvoll, dieses Skript z.B. nur 1x pro Stunde (über den Taskplaner) automatisch laufen zu lassen. In sofern interessieren in jedem Durchlauf des Skriptes auch nur diejenigen Anforderungen, die</p>
<ul>
<li>In der letzten Stunde neu erstellt wurden (“CurrentState” ist 1)</li>
<li>In der letzten Stunde abgelehnt wurden (“CurrentState” ist 3)</li>
<li>In der letzten Stunde genehmigt wurden (“CurrentState” ist 4)</li>
</ul>
<p>Aus dieser Überlegung und der Tatsache, dass sich sowohl der Vorgesetzte als auch die Mailadressen aus dem AD auslesen lassen, resultierte dieses einfache Script (Es ist nicht wirklich “schön” geschrieben, aber zumindest rudimentär kommentiert. Für einen produktiven Einsatz wird man es ohnehin nochmal an die eigenen Bedürfnisse anpassen müssen:</p>
<pre lang="PowerShell" line="1">$SiteName = "PS0"
$SiteName = "PS0"
$AdminsMail = "helpdesk@kurs.intern"
$Mailserver = "mail.kurs.intern"
$Absender = "SCCM Application Request Admin"

$MailAnAdmins = $True
$MailAnVorgesetzten = $True

function Send-MyEmail
{

    Param(
        [string]$Sender,
        [string]$Empfaenger,
        [string]$Mailserver,
        [string]$Betreff,
        [string]$Mailtext,
        [Switch]$TestOnly
    )

    try{
        If(-not $TestOnly)
        {
            Send-MailMessage -From $Sender -To $Empfaenger -Subject $Betreff -Body $Mailtext 
                -SmtpServer $Mailserver -ErrorAction Stop
        }
        else
        {
            Write-Host "E-Mail für '$Empfaenger' von '$Sender' über den Mailserver '$MailServer' `n
                        mit dem Betreff '$Betreff' und dem Text:"
            Write-Host "$Mailtext `n"

        }
    }
    catch{
        Write-Debug "Fehler beim Versand der E-Mail über den Mailserver $SmtpServer!"
    }

}

# PS-Modul für AD lasen
Import-Module ActiveDirectory

# PS-Module für SCCM laden
Import-Module "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1"
Set-Location "$($SiteName):\"

# ApprovalRequests auslesen, die sich in der letzten Stunde geändert haben 
# (Script soll stündlich laufen)
$OffeneRequests = Get-CMApprovalRequest | Where {$_.LastModifiedDate -gt (Get-Date).AddHours(-1)}

ForEach($Request in $OffeneRequests)
{
    # Anfordernder Benutzer
    $Benutzer = $Request.User
    $BenutzerLogin = Get-ADUser $($Benutzer.Substring(($Benutzer.IndexOf("\")+1),
                                                       $Benutzer.Length-$Benutzer.IndexOf("\")-1))
    $BenutzerName = ($BenutzerLogin | Get-ADUser).Name
    
    # Anwendung um die es geht
    $Anwendung = $Request.Application

    # Neue Anforderung
    If($Request.CurrentState -eq 1)
    {
        # E-Mail an Admin / Helpdeks senden
        If($MailAnAdmins)
        {
            Send-MyEmail -Sender $Absender -Empfaenger $AdminsMail -Mailserver $Mailserver 
                -Betreff "Neue Softwareanforderung von $BenutzerName" -Mailtext "Blabla..." 
                -TestOnly
        }

        # E-Mail an Vorgesetzten senden
        If($MailAnVorgesetzten)
        {
            # Vorgesetzter des anfordernden Benutzers
            $Vorgesetzter =  ($BenutzerLogin | Get-ADObject -Properties Manager).Manager | Get-ADUser
            $VorgesetzterMail = (Get-ADObject $Vorgesetzter -Properties mail).Mail

            Send-MyEmail -Sender $Absender -Empfaenger $VorgesetzterMail -Mailserver $Mailserver 
                -Betreff "Neue Softwareanforderung von $BenutzerName" -Mailtext "Blabla..." 
                -TestOnly
        }
    }

    # Anforderung wurde durch einen Administrator im SCCM genehmigt
    If($Request.CurrentState -eq 4)
    {
    
        # Mail an den anfordernden User senden
        $BenutzerMail = (Get-ADObject $BenutzerLogin -Properties mail).Mail

        Send-MyEmail -Sender $Absender -Empfaenger $BenutzerMail -Mailserver $Mailserver 
            -Betreff "Ihre Softwareanforderung für $Anwendung wurde genehmigt" -Mailtext "Blabla..." 
            -TestOnly
    }

    # Anforderung wurde durch einen Administrator im SCCM abgelehnt
    If($Request.CurrentState -eq 3)
    {
    
        # Mail an den anfordernden User senden
        $BenutzerMail = (Get-ADObject $BenutzerLogin -Properties mail).Mail

        Send-MyEmail -Sender $Absender -Empfaenger $BenutzerMail -Mailserver $Mailserver 
            -Betreff "Ihre Softwareanforderung für $Anwendung wurde abgelehnt" -Mailtext "Blabla..." 
            -TestOnly
    }
}
</pre>
<p>In der Ausführung sieht das dann so aus:</p>
<p><a href="https://www.hertes.net/wp-content/uploads/2016/02/Approval2.png"><img fetchpriority="high" decoding="async" style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="Approval2" src="https://www.hertes.net/wp-content/uploads/2016/02/Approval2_thumb.png" alt="Approval2" width="1028" height="652" border="0" /></a></p>
<p><a href="https://www.hertes.net/wp-content/uploads/2016/02/Approval1.png"><img decoding="async" style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="Approval1" src="https://www.hertes.net/wp-content/uploads/2016/02/Approval1_thumb.png" alt="Approval1" width="1028" height="603" border="0" /></a></p>
<p>Ausführen lässt sich das Skript via Taskplaner dann beispielsweise mit:</p>
<blockquote><p><em>powershell.exe -ExecutionPolicy Bypass -file &#8222;SCCMMailsFuerApprovalRequests.ps1&#8220;</em></p></blockquote>
<p>Das Skript lässt sich auch hier herunterladen:</p>
<p><a href="https://onedrive.live.com/redir?resid=836DDAB51184D5B9!356475&amp;authkey=!ANU5KfEAvZfDBwc&amp;ithint=file%2cps1" target="_blank">Downloadlink über OneDrive</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.hertes.net/2016/02/sccm-2012-r2-e-mails-fr-softwareanforderungen-umfangreicher/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SCCM 2012 R2: Neue Anwendungsanforderungen automatisch melden</title>
		<link>https://www.hertes.net/2014/11/sccm-2012-r2-neue-anwendungsanforderungen-automatisch-melden/</link>
					<comments>https://www.hertes.net/2014/11/sccm-2012-r2-neue-anwendungsanforderungen-automatisch-melden/#comments</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 04 Nov 2014 21:50:00 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[System Center]]></category>
		<category><![CDATA[System Center Configuration Manager]]></category>
		<category><![CDATA[Anwendungen]]></category>
		<category><![CDATA[Auto]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[SCCM]]></category>
		<guid isPermaLink="false">http://www.hertes.net/?p=2514</guid>

					<description><![CDATA[Der System Center Configuration Manager (SCCM) 2012 R2 bietet die Möglichkeit, Anwendungen für Benutzer als “verfügbar” bereitzustellen. In dieser Kombination (und nur dort) lässt sich auch eine Genehmigungsanforderung einschalten: Der Benutzer hat nun die Möglichkeit, die Software über den Application Catalog (Anwendungskatalog) anzufordern: Wurde die Anforderung vom Benutzer ausgelöst, so taucht sie dann in der SCCM-Konsole auf: Leider ist es nicht vorgesehen, dass man das Eintreffen einer neuen Anforderung per E-Mail o.ä. meldet und in der Regel sitzt kein Admin den ganzen Tag vor der GUI und wartet auf neue Anforderungen. Also muss man eine andere Lösung schaffen, dies weitgehend&#8230;]]></description>
										<content:encoded><![CDATA[<p>Der System Center Configuration Manager (SCCM) 2012 R2 bietet die Möglichkeit, Anwendungen für Benutzer als “verfügbar” bereitzustellen. In dieser Kombination (und nur dort) lässt sich auch eine Genehmigungsanforderung einschalten:</p>
<p><a href="https://www.hertes.net/wp-content/uploads/2014/11/approv1.png"><img decoding="async" style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin: 0px auto; display: block; padding-right: 0px; border-width: 0px;" title="approv1" src="https://www.hertes.net/wp-content/uploads/2014/11/approv1_thumb.png" alt="approv1" width="567" height="484" border="0" /></a></p>
<p>Der Benutzer hat nun die Möglichkeit, die Software über den Application Catalog (Anwendungskatalog) anzufordern:</p>
<p><a href="https://www.hertes.net/wp-content/uploads/2014/11/approv2.png"><img loading="lazy" decoding="async" style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin: 0px auto; display: block; padding-right: 0px; border-width: 0px;" title="approv2" src="https://www.hertes.net/wp-content/uploads/2014/11/approv2_thumb.png" alt="approv2" width="644" height="278" border="0" /></a></p>
<p>Wurde die Anforderung vom Benutzer ausgelöst, so taucht sie dann in der SCCM-Konsole auf:</p>
<p><a href="https://www.hertes.net/wp-content/uploads/2014/11/approv3.png"><img loading="lazy" decoding="async" style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin: 0px auto; display: block; padding-right: 0px; border-width: 0px;" title="approv3" src="https://www.hertes.net/wp-content/uploads/2014/11/approv3_thumb.png" alt="approv3" width="644" height="342" border="0" /></a></p>
<p>Leider ist es nicht vorgesehen, dass man das Eintreffen einer neuen Anforderung per E-Mail o.ä. meldet und in der Regel sitzt kein Admin den ganzen Tag vor der GUI und wartet auf neue Anforderungen. Also muss man eine andere Lösung schaffen, dies weitgehend zu automatisieren.</p>
<p>Eine Variante wäre, bei Eintreffen eben eine E-Mail zu versenden. Dazu muss man das Eintreffen einer Anforderung automatisiert feststellen können. Und dazu ist die PowerShell sehr gut geeignet:</p>
<p><a href="https://www.hertes.net/wp-content/uploads/2014/11/approv4.png"><img loading="lazy" decoding="async" style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin: 0px auto; display: block; padding-right: 0px; border-width: 0px;" title="approv4" src="https://www.hertes.net/wp-content/uploads/2014/11/approv4_thumb.png" alt="approv4" width="644" height="298" border="0" /></a></p>
<p>Der Aufruf dazu lautet:</p>
<blockquote><p>Get-CMApprovalRequest | Where-Object {$_.CurrentState -eq 1}</p></blockquote>
<p>(CurrentState ist der Zustand der Anfroderung; “1” bedeutet, sie ist neu und unbearbeitet, “4” bedeutet z.B., sie ist bereits genehmigt)</p>
<p>Mittels Format-Table o.ä. könnte man die Ausgabe noch aufbereiten:</p>
<p><a href="https://www.hertes.net/wp-content/uploads/2014/11/approv5.png"><img loading="lazy" decoding="async" style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin: 0px auto; display: block; padding-right: 0px; border-width: 0px;" title="approv5" src="https://www.hertes.net/wp-content/uploads/2014/11/approv5_thumb.png" alt="approv5" width="644" height="150" border="0" /></a></p>
<p>Nun lässt sich diese Ausgabe z.B. in eine E-Mail verpacken. Ein komplettes Skript könnte dann so aussehen:</p>
<pre lang="PowerShell" line="1">
$FromAdr = admin@abc.de
$ToAdr = receiver@abc.de
$SMTPSrv = send.abc.de
$MailSubject = "New SCCM Application Approval Request"

If((Get-CMApprovalRequest | Where-Object {$_.CurrentState -eq 1} | Measure-Object).Count -gt 0)
{
    $Mailtext = Get-CMApprovalRequest | Where-Object {$_.CurrentState -eq 1} | ft Application,User,Comments -Auto
    Send-MailMessage -from $FromAdr -to $ToAdr -subject $MailSubject -body $Mailtext -smtpServer $SMTPSrv
}
</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.hertes.net/2014/11/sccm-2012-r2-neue-anwendungsanforderungen-automatisch-melden/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>SCCM: Deinstallation von Anwendungen &#8211; die einfache Variante</title>
		<link>https://www.hertes.net/2013/10/sccm-deinstallation-von-anwendungen-die-einfache-variante/</link>
					<comments>https://www.hertes.net/2013/10/sccm-deinstallation-von-anwendungen-die-einfache-variante/#respond</comments>
		
		<dc:creator><![CDATA[Haiko]]></dc:creator>
		<pubDate>Mon, 28 Oct 2013 21:47:00 +0000</pubDate>
				<category><![CDATA[System Center Configuration Manager]]></category>
		<category><![CDATA[Anwendungen]]></category>
		<category><![CDATA[Configuration Manager]]></category>
		<category><![CDATA[Deinstallieren]]></category>
		<category><![CDATA[SCCM]]></category>
		<guid isPermaLink="false">http://www.hertes.net/?p=1988</guid>

					<description><![CDATA[Seit Configuration Manager 2012 gibt es neben den “Paketen” auch die “Anwendungen”, die bei denen man zusätzlich zur Installation auch gleich die Möglichkeit der Deinstallation integrieren kann. Will man nun beide Wege sinnvoll “automatisieren”, ergibt sich häufig, dass es eine Installations- und eine Deinstallations-Sammlung gibt. Wenn man nun einen Computer in die Installations-Sammlung aufnimmt, wird die entsprechende Software auf dem Gerät installiert. Entfernt man den Client aus der Installations-Sammlung, so wird die Anwendung aber nicht automatisch deinstalliert, man müsste nun erst den CLient in die Deinstallations-Sammlung aufnehmen. Diesen Prozess kann man etwas vereinfachen: Die Software “Adobe Reader” wurde 2x bereitgestellt&#8230;]]></description>
										<content:encoded><![CDATA[<p>Seit Configuration Manager 2012 gibt es neben den “Paketen” auch die “Anwendungen”, die bei denen man zusätzlich zur Installation auch gleich die Möglichkeit der Deinstallation integrieren kann. Will man nun beide Wege sinnvoll “automatisieren”, ergibt sich häufig, dass es eine Installations- und eine Deinstallations-Sammlung gibt. Wenn man nun einen Computer in die Installations-Sammlung aufnimmt, wird die entsprechende Software auf dem Gerät installiert. Entfernt man den Client aus der Installations-Sammlung, so wird die Anwendung aber nicht automatisch deinstalliert, man müsste nun erst den CLient in die Deinstallations-Sammlung aufnehmen. Diesen Prozess kann man etwas vereinfachen:</p>
<p>Die Software “Adobe Reader” wurde 2x bereitgestellt – einmal für die Installation und einmal für die Deinstallation:</p>
<p><a href="https://www.hertes.net/wp-content/uploads/2013/10/sccm_uninstall1.png"><img loading="lazy" decoding="async" style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin: 0px auto; display: block; padding-right: 0px; border: 0px;" title="sccm_uninstall1" src="https://www.hertes.net/wp-content/uploads/2013/10/sccm_uninstall1_thumb.png" alt="sccm_uninstall1" width="644" height="370" border="0" /></a></p>
<p>Der Trick ist nun, die Deinstallations-Sammlung über Mitgliedschaftsregeln automatisch befüllen zu lassen, und zwar so, dass das gewünschte Gerät, sobald man es aus der Installations-Sammlung entfernt hat, in die Deinstallations-Sammlung wandert – und das automatisch.</p>
<p>Dazu hinterlegt man an der Deinstallations-Sammlung Mitgliedschaftsregeln nach dieser Form:</p>
<p><a href="https://www.hertes.net/wp-content/uploads/2013/10/sccm_uninstall2.png"><img loading="lazy" decoding="async" style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin: 0px auto; display: block; padding-right: 0px; border: 0px;" title="sccm_uninstall2" src="https://www.hertes.net/wp-content/uploads/2013/10/sccm_uninstall2_thumb.png" alt="sccm_uninstall2" width="458" height="484" border="0" /></a></p>
<p>Nun wird die Software also auf allen Geräten entfernt, die nicht in der Installations-Sammlung enthalten sind. Dadurch wird das Handling vereinfacht:</p>
<ul>
<li>Gerät in Installations-Sammlung: Installation wird durchgeführt, wenn Software noch nicht vorhanden ist</li>
<li>Gerät NICHT in Installations-Sammlung: Deinstallation wird durchgeführt, falls Software vorhanden ist</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.hertes.net/2013/10/sccm-deinstallation-von-anwendungen-die-einfache-variante/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
