<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>ITBlog.no</title>
    <description>Notes from a consultant.
</description>
    <link>https://kmhuglen.github.io/itblog.no/</link>
    <atom:link href="https://kmhuglen.github.io/itblog.no/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Tue, 18 Mar 2025 15:03:48 +0000</pubDate>
    <lastBuildDate>Tue, 18 Mar 2025 15:03:48 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>Sømløs brukeropplevelse mot skybaserte- og tradisjonelle applikasjoner?</title>
        <description>&lt;p&gt;&lt;strong&gt;Er Windows 10 verktøyet som tar BYOD fra hype til hyllevare?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bring-Your-Own-Device har blitt snakket om lenge, men er mindre utbredd enn man skulle tro ut fra markedsføringen. Dette kan nå begynne å endre seg med de mulighetene som Windows 10 gir, samt at verktøyene for å kontrollere og konfigurere enhetene har blitt mer modne. I dette innlegget vil jeg prøve å gi et kort innblikk i nye muligheter: Hvordan de kan gi en god brukeropplevelse og hvordan IT-avdelingen kan redusere manuelle tidkrevende prosesser.&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Azure AD Join&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Denne integrerte funksjonen i Windows 10 gir gode brukeropplevelser og benyttes for å koble maskinen mot Azure AD. Azure AD kan enten være en forlengelse av bedriftens interne Active Directory eller et helt eget separat AD levert fra Azure. Når man kobler en maskin mot Azure AD kan man automatisk registrere den i et verktøy for å utføre administrasjon og kontroll av mobile enheter (MDM eller Mobile Device Management). Kundene kan velge mellom ulike aktører, for eksempel Citrix XenMobile eller Vmware AirWatch. Microsoft leverer dette også selv via Microsoft Intune. Microsoft Intune blir brukt som eksempel her.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fler-faktor autentisering og selvbetjening&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Med lisenser for Azure AD Premium eller Enterprise Mobility Suite (EMS) følger tilgang på en rekke andre funksjoner som fler-faktor autentisering (MFA), selvbetjening av passord reset/change/unlock, selvbetjent gruppe styring samt analyse av pålogginger for å oppdage og hindre uvedkommende. Alle leveres som skytjenester og krever ikke oppsett av intern infrastruktur.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mobile Device Management&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Når en maskin er registrert i Intune kan en sende ut innstillinger, retningslinjer (Policy) til enheten, tilgjengeliggjøre eller utføre installasjon av programvare og lignende. Eksempel på retningslinjer kan være at maskinen skal være kryptert med BitLocker, ha oppdatert antivirus, krav til passord, m.m.&lt;/p&gt;

&lt;p&gt;Her er en kort video av hvordan en sluttbruker selv setter opp en ny Windows 10 maskin på 5 minutter ferdig konfigurert. It-avdelingen kan være trygg på at deres krav til sikkerhet er oppfylt og sluttbrukeren får en sømløs pålogging (Single-Sign-On (SSO)) til alle sine tjenester.&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/Ek4c8v4AZeo&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;Video 1:23 min: Oppsett av en ny Windows 10 PC via Azure AD Join. Førstegangspålogging, avsluttes med at bruker må godta bedriftens policy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tradisjonelle applikasjoner&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I dag skal it-avdelingen ikke bare støtte både tradisjonelle applikasjoner, enten installert direkte på maskinen eller publisert ut via terminal server, men også tilby nye skybaserte applikasjoner fra sitt eget datasenter eller kjøpt som en SaaS-tjeneste. Hybride tilnærminger blir trolig normen i god tid fremover&lt;/p&gt;

&lt;p&gt;Ny funksjonalitet fra både Citrix og VMware løser denne utfordringen ved å publisere applikasjoner fra bedriftens interne terminal og VDI tjenester og gi SSO hele veien.&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/LAH5R10fQUQ&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;Video 0:58: Innlogging på en Windows 10, Single-Sign-On mot intern Citrix portal og oppstart av en applikasjon uten flere spørsmål om brukernavn og passord.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Den virkelig gode brukeropplevelsen&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Her har jeg vist et eksempel på hvordan en sluttbruker selv kan sette opp en ny Windows 10 maskin, og oppnå en god brukeropplevelse. Det fine er at en trenger ikke ta i bruk alle funksjonene. Hver av komponentene kan settes opp separat.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Windows Store for Business&lt;/strong&gt;&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/nlFCBSAmESo&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;Video 0:20: Windows Store for Business med tvungen installasjon av utvalgte applikasjoner via Intune&lt;/p&gt;

&lt;p&gt;Ønsker du å høre mer rundt Windows 10, Azure AD, Bring-You-Own eller Single-Sign-On og hvordan du kan utnytte deg av mulighetene i ditt miljø? Firstpoint har flere konsulenter som jobber med dette området - ta kontakt med &lt;a href=&quot;http://www.firstpoint.no/ansatte/knut-magne-huglen/&quot;&gt;Knut Magne&lt;/a&gt;, &lt;a href=&quot;http://www.firstpoint.no/ansatte/ole-idar-bruvik/&quot;&gt;Ole Idar&lt;/a&gt;, &lt;a href=&quot;http://www.firstpoint.no/ansatte/magnar-johnsen/&quot;&gt;Magnar&lt;/a&gt; eller &lt;a href=&quot;http://www.firstpoint.no/ansatte/frode-lohne-saele/&quot;&gt;Frode&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 15 Jun 2016 05:06:00 +0000</pubDate>
        <link>https://kmhuglen.github.io/itblog.no/5946</link>
        <guid isPermaLink="true">https://kmhuglen.github.io/itblog.no/5946</guid>
        
        <category>Azure AD</category>
        
        <category>Firstpoint</category>
        
        <category>Intune</category>
        
        <category>Windows 10</category>
        
        <category>Windows Store</category>
        
        
      </item>
    
      <item>
        <title>Rerun Runbook Activities with status In Progress</title>
        <description>&lt;p&gt;After an incident with the Orchestrator server, several runbook activities in Service Manager did not complete and ended up in status of In Progress but nothing happens.&lt;/p&gt;

&lt;p&gt;To rerun all runbook activities that had this status, I wrote a small PowerShell script that found all runbook activities with status In Progress and where LastModified date where older than a day.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/kmhuglen/71ad3f307dfdd976d5a7.js&quot;&gt;&lt;/script&gt;

</description>
        <pubDate>Mon, 08 Feb 2016 04:02:10 +0000</pubDate>
        <link>https://kmhuglen.github.io/itblog.no/5875</link>
        <guid isPermaLink="true">https://kmhuglen.github.io/itblog.no/5875</guid>
        
        <category>Orchestrator</category>
        
        <category>PowerShell</category>
        
        <category>Service Manager</category>
        
        <category>System Center</category>
        
        
        <category>it-pro</category>
        
      </item>
    
      <item>
        <title>Send-MailMessage command with conditional Cc and Bcc arguments</title>
        <description>&lt;p&gt;This is an example of how you could write a PowerShell script sending mail message using the Send-MailMessage command with conditional Cc and Bcc arguments.&lt;/p&gt;

&lt;p&gt;Sometime my script will define Cc and Bcc mail addresses based on a condition earlier in the script. Instead of creating a long IF statement checking the variables and then running a different set of argument on the command, I use the example below to have the Cc and Bcc argument added to the Send-MailMessage arguments set only if they exist.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/kmhuglen/858c4fdc92088fea8046.js&quot;&gt;&lt;/script&gt;

</description>
        <pubDate>Fri, 07 Aug 2015 02:08:42 +0000</pubDate>
        <link>https://kmhuglen.github.io/itblog.no/5861</link>
        <guid isPermaLink="true">https://kmhuglen.github.io/itblog.no/5861</guid>
        
        <category>PowerShell</category>
        
        
        <category>it-pro</category>
        
      </item>
    
      <item>
        <title>AutoCAD and Distributed file system | PowerShell GUI restoring deleted files</title>
        <description>&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;PeerLink has the ability to keep Lock on files while the file is replicated, if interested se also their solution for CAD File Collaboration&lt;/p&gt;

&lt;p&gt;A client of mine uses Windows Server 2008 R2 file servers with Distributed files service (Dfs) for their AutoCAD Project. For several years, it worked without problems. After adding a new Windows Server 2012 R2 file server to the solution, some .dwg files went missing right after the project where saved.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://knowledge.autodesk.com/search-result/caas/sfdcarticles/sfdcarticles/Distributed-File-System-DFS-support.html&quot;&gt;Autodesk DOES NOT support Distributed File System (Dfs)&lt;/a&gt;, so no help there. After searching the web, I found&lt;a href=&quot;http://forums.autodesk.com/t5/autocad-2013-2014-2015-2016/windows-dfs-deleting-autocad-dwg/td-p/5173101&quot;&gt; other facing the same problem&lt;/a&gt;. However, no satisfied solution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Possible solutions&lt;/strong&gt; (not tested by me)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;a) Forcing all clients and servers to use the same version of SMB.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://blogs.technet.com/b/josebda/archive/2013/10/02/windows-server-2012-r2-which-version-of-the-smb-protocol-smb-1-0-smb-2-0-smb-2-1-smb-3-0-or-smb-3-02-you-are-using.aspx&quot;&gt;Windows Server 2012 R2: Which version of the SMB protocol (SMB 1.0, SMB 2.0, SMB 2.1, SMB 3.0 or SMB 3.02) are you using?&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Disabling SMB3 would also disable SMB2, as they both use the same stack, forcing everything to go back to the &lt;a href=&quot;http://en.wikipedia.org/wiki/Server_Message_Block#History&quot;&gt;Stone Age using only SMB1.&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://support.microsoft.com/en-us/kb/2696547&quot;&gt;How to enable and disable SMBv1, SMBv2, and SMBv3 in Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, and Windows Server 2012&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;b) Downgrade to Windows Server 2008 R2.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;While this probably would work, there is the issue that &lt;a href=&quot;https://support.microsoft.com/en-us/lifecycle/search?sort=PN&amp;amp;alpha=Windows%20Server%202008%20R2&quot;&gt;Windows Server 2008 R2 Mainstream support ended January 13 2015&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Workaround&lt;/strong&gt; (while further troubleshooting)&lt;/p&gt;

&lt;p&gt;A simple PowerShell GUI script for easy file restore from the DfsrPrivate\ConflictAndDeleted folder.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/kmhuglen/b5e64c96db66b0aa50af.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;The script has two parameters, ComputerName and Filter. By default it use the computer name of the computer you start the script on, and *.dwg as filter.&lt;/p&gt;

&lt;p&gt;First, it gets all the Replicated Folders on the server, then goes through the conflictanddeletedmanifest.xml of each replicated folder and display it all in a grid view.&lt;/p&gt;

&lt;p&gt;Selecting one or several files and clicking OK, starts a copy-item (with –confirm) job on each selected item.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;UPDATED: June 2. 2016&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I talked to &lt;a href=&quot;http://www.peersoftware.com/&quot;&gt;Peer Software&lt;/a&gt; about the problem as they had several products that should be able to fix the problem.&lt;/p&gt;

&lt;p&gt;I briefly tested their &lt;a href=&quot;http://www.peersoftware.com/solutions/file-locking-for-ms-dfsr.html&quot;&gt;Trial version of PeerLock for Microsoft DFS&lt;/a&gt; and it seem to fix the problem in my Lab environment. But as Peer Software would not recommend that product for our use (high latency and unstable VPN connection to other location), we did not go forward with that solution.&lt;/p&gt;

&lt;p&gt;Peer Software had another product &lt;a href=&quot;http://www.peersoftware.com/products/file-collaboration/peerlink.html&quot;&gt;PeerLink&lt;/a&gt; that would fit our requirement.&lt;/p&gt;

&lt;p&gt;PeerLink has the ability to keep Lock on files while the file is replicated, if interested see also their solution for &lt;a href=&quot;http://www.peersoftware.com/solutions/cad-file-sharing-for-windows-and-netapp.html&quot;&gt;CAD File Collaboration&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Curiosity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://windowsitpro.com/windows-client/dfs-vs-dfs&quot;&gt;Dfs vs DFS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Sat, 25 Apr 2015 02:04:06 +0000</pubDate>
        <link>https://kmhuglen.github.io/itblog.no/5800</link>
        <guid isPermaLink="true">https://kmhuglen.github.io/itblog.no/5800</guid>
        
        <category>AutoCAD</category>
        
        <category>DFS</category>
        
        <category>PowerShell</category>
        
        <category>Tools</category>
        
        <category>Windows Server</category>
        
        
        <category>it-pro</category>
        
      </item>
    
      <item>
        <title>Switch between Hyper-V and VMware on Windows</title>
        <description>&lt;p&gt;Do you already use Hyper-V in Windows 8, and need to run other virtualization solutions?&lt;/p&gt;

&lt;p&gt;You are not able to install other hypervisors when the Hyper-V feature is installed. You could uninstall the Hyper-V feature or dual booting between an installation with Hyper-V and one without. Taking up double the disk space, and the extra effort keeping two operating system up-to-date.&lt;/p&gt;

&lt;p&gt;A better solution could be to use BCDEdit to create two boot options, one with Hyper-V and one where the Hyper-V hypervisor is turned off. Giving you the ability to install VMware, Virtual Box or other visualization solution without the Hyper-V feature giving your problem.&lt;/p&gt;

&lt;p&gt;To create the Boot Options with BCDEdit run the following commands in an elevated command prompt.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bcdedit /copy {current} /d &quot;Hyper-V&quot;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bcdedit /set {current} hypervisorlaunchtype off&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Next time you reboot you will see a Boot Menu. If you do not select anything, after 30 seconds, Windows 8.1 will boot up with the Hyper-V feature disabled.&lt;/p&gt;

&lt;p&gt;You can configure the default boot options by going to Control Panel\System and Security\System, select “Advanced system settings” from the left side, go to Advanced pane and click the Settings button within the Setup and Recovery section. Here you can select with operation system would be your default operating system, configure the amount of second to wait for input etc.&lt;/p&gt;
</description>
        <pubDate>Tue, 14 Apr 2015 02:04:01 +0000</pubDate>
        <link>https://kmhuglen.github.io/itblog.no/5783</link>
        <guid isPermaLink="true">https://kmhuglen.github.io/itblog.no/5783</guid>
        
        <category>Dual Boot</category>
        
        <category>Hyper-V</category>
        
        <category>VMware</category>
        
        <category>Windows</category>
        
        
        <category>it-pro</category>
        
      </item>
    
      <item>
        <title>Silently deploy TeamViewer 10 Host</title>
        <description>&lt;ol&gt;
  &lt;li&gt;Logon on to &lt;a href=&quot;https://login.teamviewer.com/nav/menu/designanddeploy&quot;&gt;TeamViewer.com&lt;/a&gt; and create a custom module.&lt;/li&gt;
  &lt;li&gt;Download the TeamViewer_Host-&lt;strong&gt;idcXXXXXXX&lt;/strong&gt;.msi (or just rename the one you already have, remember to add &lt;strong&gt;-idc&lt;/strong&gt; before your 7 character ConfigurationID).&lt;/li&gt;
  &lt;li&gt;Install the TeamViewer Host on a computer; configure it the way you want, and export the &lt;strong&gt;TeamViewer_Settings.reg&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;Run the &lt;em&gt;TrustConfigID.ps1&lt;/em&gt; script on a computer With the Active Directory PowerShell Module installed and with administrative rights to your domain. (Replace the XXXXXXX With Your ConfigurationID)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.\TrustConfigID.ps1 -Add XXXXXXX -Name TeamViewer -Path &quot;CN=System,DC=yourdomain,DC=com&quot;&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Put both the &lt;strong&gt;TeamViewer_Host-idcXXXXXXX.msi&lt;/strong&gt; and &lt;strong&gt;TeamViewer_Settings.reg&lt;/strong&gt; in the same folder/share.&lt;/li&gt;
  &lt;li&gt;Run the following commands to silently install, remove desktop shortcut and hide the dialog at logon:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;REG ADD HKCU\Software\TeamViewer /v HostInfoDialog /t REG_DWORD /d 0&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;REG ADD HKU\.DEFAULT\Software\TeamViewer /v HostInfoDialog /t REG_DWORD /d 0&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;start /wait MSIEXEC.EXE /i &quot;TeamViewer_Host-idcmbwnmzt.msi&quot; /qn&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;del &quot;%Public%\Desktop\TeamViewer*.lnk&quot;&lt;/code&gt;&lt;/p&gt;

</description>
        <pubDate>Wed, 08 Apr 2015 09:04:56 +0000</pubDate>
        <link>https://kmhuglen.github.io/itblog.no/5774</link>
        <guid isPermaLink="true">https://kmhuglen.github.io/itblog.no/5774</guid>
        
        <category>TeamViewer</category>
        
        <category>Active Directory</category>
        
        
        <category>it-pro</category>
        
      </item>
    
      <item>
        <title>Blog about PowerShell and Distributed File Service Replication (DFS) in Windows Server 2012 R2</title>
        <description>&lt;p&gt;&lt;a href=&quot;http://blogs.technet.com/b/filecab/archive/2013/08/20/dfs-replication-in-windows-server-2012-r2-if-you-only-knew-the-power-of-the-dark-shell.aspx&quot;&gt;DFS Replication in Windows Server 2012 R2: If You Only Knew the Power of the Dark Shell&lt;/a&gt; by &lt;a href=&quot;http://social.technet.microsoft.com/profile/NedPyle%20[MSFT]&quot;&gt;Ned Pale&lt;/a&gt;&lt;/p&gt;

</description>
        <pubDate>Thu, 26 Feb 2015 09:02:08 +0000</pubDate>
        <link>https://kmhuglen.github.io/itblog.no/5762</link>
        <guid isPermaLink="true">https://kmhuglen.github.io/itblog.no/5762</guid>
        
        <category>DFS</category>
        
        <category>PowerShell</category>
        
        <category>Replication</category>
        
        <category>Windows Server</category>
        
        
        <category>it-pro</category>
        
      </item>
    
      <item>
        <title>Beautiful User Interface with PowerShell</title>
        <description>&lt;p&gt;&lt;img src=&quot;/assets/2015-02-12_PSWPFExample.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This simple sample code can be used to create beautiful user interface in your PowerShell script.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/kmhuglen/e523d442cb2f10a49d3d45b330735b36.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;Running SP scripts utilizing WPF forms on machines with only PowerShell version 2, one has to specify the -STA argument to start the PowerShell process as Single Threaded Apartment. This is the default in version 3 of PowerShell.&lt;/p&gt;

&lt;p&gt;powershell.exe -Version 2 -STA -Noprofile -ExecutionPolicy Bypass “.\PSWPFExample.ps1”&lt;/p&gt;

</description>
        <pubDate>Thu, 12 Feb 2015 02:02:57 +0000</pubDate>
        <link>https://kmhuglen.github.io/itblog.no/5668</link>
        <guid isPermaLink="true">https://kmhuglen.github.io/itblog.no/5668</guid>
        
        <category>PowerShell</category>
        
        
        <category>it-pro</category>
        
      </item>
    
      <item>
        <title>SCSM: Sync Computers from a InstanceGroup to Business Service&apos;s ComputersGroup</title>
        <description>&lt;p&gt;I could not find an intuitive way of adding a Dynamic Group of Computers (InstanceGroup) into the ServiceMap on a Business Service. Instead I added a regular ComputersGroup to the ServiceMap of the Business Service and utilized PowerShell to update the ComputersGroup with Objects from the InstanceGroup. This can of course be scheduled to run by Windows Scheduler, Orchestrator or SMA every hour, day or whatever.&lt;/p&gt;

&lt;p&gt;Param(
[Parameter(Mandatory=$true)] 
[string]$ComputerInstanceGroupDisplayName
,
[Parameter(Mandatory=$true)] 
[string]$BusinessServiceDisplayName
,
[Parameter(Mandatory=$true)] 
[string]$BusinessServiceComputerGroupDisplayName
)&lt;/p&gt;

&lt;p&gt;$BusinessServiceClass = Get-SCSMClass -Name Microsoft.SystemCenter.BusinessService
$BusinessService = Get-SCSMObject -Class $BusinessServiceClass -Filter “DisplayName -eq $BusinessServiceDisplayName”
$BusinessServiceComputerGroup = Get-SCSMRelatedObject $BusinessService | Where {$_.DisplayName -eq $BusinessServiceComputerGroupDisplayName}
$BusinessServiceComputerGroupComputers = Get-SCSMRelatedObject $BusinessServiceComputerGroup&lt;/p&gt;

&lt;p&gt;$InstanceGroupClass = Get-SCSMClass -Name InstanceGroup | Where {$_.DisplayName -eq $ComputerInstanceGroupDisplayName}
$InstanceGroup = Get-SCSMObject -Class $InstanceGroupClass
$InstanceGroupComputers = Get-SCSMRelatedObject $InstanceGroup&lt;/p&gt;

&lt;p&gt;$Computers = Compare-Object -ReferenceObject $BusinessServiceComputerGroupComputers -DifferenceObject $InstanceGroupComputers -PassThru
IF ($Computers)
{
    $REL_ConfigItemContainsConfigItem = Get-SCSMRelationshipClass -Name System.ConfigItemContainsConfigItem
    Foreach ($Computer in $computers)
    {
        New-SCSMRelationshipObject -Relationship $REL_ConfigItemContainsConfigItem -Source $BusinessServiceComputerGroup -Target $Computer -Bulk
    }
}&lt;/p&gt;
</description>
        <pubDate>Thu, 30 Oct 2014 01:10:21 +0000</pubDate>
        <link>https://kmhuglen.github.io/itblog.no/5644</link>
        <guid isPermaLink="true">https://kmhuglen.github.io/itblog.no/5644</guid>
        
        <category>PowerShell</category>
        
        <category>Service Manager</category>
        
        <category>System Center</category>
        
        
        <category>it-pro</category>
        
      </item>
    
      <item>
        <title>Service Manager Data WareHouse SQL Queries</title>
        <description>&lt;p&gt;This post list common SQL queries that I use when building reports against Service Manager Data Warehouse with SQL Server Report Builder.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;List Active Business Services&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SELECT
	Replace(Replace(Replace(DisplayName,’_’,’ ‘),’ ‘,’ ‘),’ ‘,’ ‘) As Service 
	*/ The replace of underscore and Spaces is customer spesific */
FROM 
	ServiceDimvw
WHERE
	DisplayName not like ‘NULL’
	AND
	Status_ServiceStatusId = ‘6’
	AND
	IsBusinessService = ‘1’
ORDER BY
	DisplayName&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;List Available Incident Classifications&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SELECT 
	DisplayName
FROM
	IncidentClassificationvw&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Left Join DisplayStringDimvw StringClassification ON IncidentClassificationvw.EnumTypeId = StringClassification.BaseManagedEntityId
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;WHERE
	DisplayName NOT Like ‘%(not in use)%’
	*/ The ‘%(not in use)%’ is customer spesific */
	AND
	DisplayName NOT Like ‘Incident Classification’
	AND
	LanguageCode = ‘ENU’&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;List Available Sources&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SELECT 
	DisplayName
FROM
	IncidentSourcevw
	Left Join DisplayStringDimvw StringSource ON IncidentSourcevw.EnumTypeId = StringSource.BaseManagedEntityId
WHERE
	DisplayName NOT Like ‘Incident Source’
	AND
	LanguageCode = ‘ENU’&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Count of Incidents by Tier by days/week/month/year&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SELECT
	StringTierQueues.DisplayName As Tier,
	COUNT(Case when 
		(
			Incident.Status Not Like ‘IncidentStatusEnum.Resolved’ 
			And
			Incident.Status Not Like ‘IncidentStatusEnum.Closed’
		)
		Then 1 end)	As “Open Incidents”,
	COUNT(Case when
		(
			YEAR(Incident.ResolvedDate) = YEAR(getdate())
			And
			DATEPART(wk,Incident.ResolvedDate) = DATEPART(wk,getdate())
			And
			DAY(Incident.ResolvedDate) = Day(getdate())
		)
		Then 1 End) As “Today”, 
	COUNT(Case when
		(
			YEAR(Incident.ResolvedDate) = YEAR(getdate())
			And
			DATEPART(wk,Incident.ResolvedDate) = DATEPART(wk,getdate())
			And
			DAY(Incident.ResolvedDate) = Day(DATEADD(Day,-1,getdate()))
		)
		Then 1 End) As “Yesterday”,
	COUNT(Case when
		(
			YEAR(Incident.ResolvedDate) = YEAR(getdate())
			And
			DATEPART(wk,Incident.ResolvedDate) = DATEPART(wk,getdate())
			And
			DAY(Incident.ResolvedDate) = Day(DATEADD(Day,-2,getdate()))
		)
		Then 1 End) As “2 days ago”,
	COUNT(Case when
		(
			YEAR(Incident.ResolvedDate) = YEAR(getdate())
			And
			DATEPART(wk,Incident.ResolvedDate) = DATEPART(wk,getdate())
		)
		Then 1 End) As “This Week”,
	COUNT(Case when
		(
			YEAR(Incident.ResolvedDate) = YEAR(getdate())
			And
			DATEPART(wk,Incident.ResolvedDate) = DATEPART(wk,DATEADD(WEEK,-1,getdate()))
		)
		Then 1 End) As “Last Week”,
	COUNT(Case when
		(
			YEAR(Incident.ResolvedDate) = YEAR(getdate())
			And
			DATEPART(wk,Incident.ResolvedDate) = DATEPART(wk,DATEADD(WEEK,-2,getdate()))
		)
		Then 1 End) As “2 Weeks ago”,
	COUNT(Case when
		(
			YEAR(Incident.ResolvedDate) = YEAR(getdate())
			And
			MONTH(Incident.ResolvedDate) = MONTH(getdate())
		)
		Then 1 End) As “This Month”,
	COUNT(Case when
		(
			YEAR(Incident.ResolvedDate) = YEAR(getdate())
			And
			MONTH(Incident.ResolvedDate) = ((MONTH(getdate()))-1)
		)
		Then 1 End) As “Last Month”,
	COUNT(Case when
		(
			YEAR(Incident.ResolvedDate) = YEAR(getdate())
			And
			MONTH(Incident.ResolvedDate) = ((MONTH(getdate()))-2)
		)
		Then 1 End) As “2 Months ago”,
	COUNT(Case when
		(
			YEAR(Incident.ResolvedDate) = YEAR(getdate())
		)
		Then 1 End) As “This Year”,
	COUNT(Case when
		(
			YEAR(Incident.ResolvedDate) = ((YEAR(getdate()))-1)
		)
		Then 1 End) As “Last Year”,
	COUNT(Case when
		(
			YEAR(Incident.ResolvedDate) = ((YEAR(getdate()))-2)
		)
		Then 1 End) As “2 Years Ago”&lt;/p&gt;

&lt;p&gt;FROM 
	IncidentDimvw AS Incident&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Join IncidentClassificationvw ClassificationVW ON Incident.Classification_IncidentClassificationId = ClassificationVW.IncidentClassificationId
Join DisplayStringDimvw StringClassification ON ClassificationVW.EnumTypeId = StringClassification.BaseManagedEntityId

Join IncidentSourcevw SourceVW ON Incident.Source_IncidentSourceId = SourceVW.IncidentSourceId
Join DisplayStringDimvw StringSource ON SourceVW.EnumTypeId = StringSource.BaseManagedEntityId

Join IncidentTierQueuesvw TierQueuesVW ON Incident.TierQueue_IncidentTierQueuesId = TierQueuesVW.IncidentTierQueuesId 
Join DisplayStringDimvw StringTierQueues ON TierQueuesVW.EnumTypeId = StringTierQueues.BaseManagedEntityId
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;WHERE 
	StringClassification.DisplayName IN (@Classification)
	AND
	StringSource.DisplayName IN (@Source)
	AND
	StringClassification.LanguageCode = ‘ENU’
	AND
	StringSource.LanguageCode = ‘ENU’
	AND
	StringTierQueues.LanguageCode = ‘ENU’&lt;/p&gt;

&lt;p&gt;GROUP BY 
	StringTierQueues.DisplayName&lt;/p&gt;
</description>
        <pubDate>Tue, 16 Sep 2014 11:09:06 +0000</pubDate>
        <link>https://kmhuglen.github.io/itblog.no/5618</link>
        <guid isPermaLink="true">https://kmhuglen.github.io/itblog.no/5618</guid>
        
        <category>Service Manager</category>
        
        <category>SQL</category>
        
        
        <category>it-pro</category>
        
      </item>
    
  </channel>
</rss>
