SCCM 2012 – Wake on LAN

In our environment Wake on Lan with System Center 2012 doesn’t work. After some research i changed the transmission method from “Unicast” to “Subnet-directed broadcasts” and all worked well. I don’t know how you must configure your Switches but also for some other people this works.

wol

Don’t forget to check your Log files on the Server:

  • Wolmgr.log
  • WolCmgr.log
  • SCCM 2012 – Add / Edit Deployments with Powershell

    • Add a Deployment for an Application (Application Available / User Information)
      Start-CMApplicationDeployment -CollectionName "Collection Name" -Name "Softwarename" -DeployAction Install -DeployPurpose Available -UserNotification DisplayAll -AvaliableDate (Get-Date) -AvaliableTime (Get-Date) -Verbose
    • Add a Deployment for an Application (Application Requierd / No User Information)
      Start-CMApplicationDeployment -CollectionName "Collection Name" -Name "Softwarename" -DeployAction Install -DeployPurpose Required -SendWakeUpPacket $True -UserNotification HideAll -AvaliableDate (Get-Date) -AvaliableTime (Get-Date) -RebootOutsideServiceWindow $True -OverrideServiceWindow $True -Verbose
    • If you have should create more Deployments for an Application following script should help:

      Import-CSV $filepath -Header Software, Room | Foreach-Object{
          Start-CMApplicationDeployment -CollectionName $_.Room -Name $_.Software -DeployAction Install -DeployPurpose Required -SendWakeUpPacket $True -UserNotification HideAll -AvaliableDate (Get-Date) -AvaliableTime (Get-Date) -RebootOutsideServiceWindow $True -OverrideServiceWindow $True -Verbose
      }
      

      This CSV File has two colums. The first is the Softwarename and the second is the Room (The Room is in my case the Collection Name). To run the script you must before allow scripts with following command:

      Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
      
    • If you want to edit a Deployment follwing command is an example. Please note that the AvailableDate/Time and DeadlineDate/Time is the same. This results in that the Installation Deadline is set to “As soon as possible after the available time”
      Set-CMApplicationDeployment -ApplicationName $_.Software -CollectionName "Collection Name" -AvaliableDate 2014/06/29 -AvaliableTime 11:22 -DeadlineDate 2014/06/29 -DeadlineTime 11:22 -SendWakeUpPacket $True -UserNotification DisplaySoftwareCenterOnly -RebootOutsideServiceWindow $True -OverrideServiceWindow $True -Verbose

     

    Configuration Manager 2012 – Log Files (Client Side)

    Software Metering

    • mtrmgr.log (Logs all Software which started on a computer and looks for a possible match for the Software Metering)
      mtrmgr
    • SWMTRReportGen.log (See if the Report was created and send to the server)

    Software Installation

    • AppEnforce.log (See the Installation command and maybe the errors)
    • CAS.log (Download Status of currentlly downloaded and installed Software)

    Deploy Skype without Desktop Shortcut / Autostart

    You have the choice to deploy Skype silent, with the .msi Installer from Skype Business. The Problem is that the built in .mst files for me not working. See here for more info:

    http://community.skype.com/t5/Windows-desktop-client/Unattended-install/m-p/184740#M18609

    So i create a own .mst File with the changes. First of all i want to prevent the automatic startup of skype. So you must delete following line, in the Registry Table. (I use InstEd to create a .mst file)

    skype

    Furthermore i have deleted also the Desktop Shortcut in the Shortcuts Table. To apply the .mst File run following command:

    msiexec.exe /i SkypeSetup.msi TRANSFORMS=skype.mst /qb

    App-V 5.0 – Sequence MDesign 2012

    Install all components and after that the installer will ask you following question.

    mdesign1

    Choose “No” and install FlexLM.

    After that it will ask you to create a Hostfile. Say again “No”.

    mdesign2

    Now here comes the problem. If you copy your License files to the standard folder (C:\Q\MDesign\License files) the FlexLM client won’t find the license files if you start the application because the folder names have to much characters. Normally the path looks like this on the client machine: C:\ProgramData\AppV\PackageID\VersionID. This is to long for the FlexLM client. As a workaround we copy the License files to the Windows folder when we Sequence.

    I created following folder structure:

    C:\Windows\App-V\MDesign\License files
    

    and in this folder i put the license files. After that we must start the FlexLM client. You can find it under C:\Q\MDesign\License files. Start lmtools.exe with administrator rights.

    mdesign3

    Now switch the tab to “Config Services” and type in the path where the license files are stored.

    mdesign4

    Restart the server and everything should work. 🙂

    AppV 5.0 – Sequence Software Eagle

    You can sequence the application normally. But if you publish and test your application with a Domain User which has no Admin Rights you will get a error message, that you have no rights to read/write the license file. For this problem you must change the rights on the eagle license file. My solution was to create a script which change the permission on this file. The script look like this:

    Please note: Change the path that it matches your PackageID.

    $license_file = "C:\ProgramData\App-V\A6D812CF-A1DA-4CA3-9114-F5B2C64EBB8E\112A1E05-5958-477E-BDFF-DD95322E201F\Root\EAGLE-6.4.0\bin\eagle.key"
    
    $acl = Get-Acl $license_file
    $arguments = "Everyone","Modify","Allow"
    $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $arguments
    $acl.SetAccessRule($accessRule)
    $acl | Set-Acl $license_file
    

    In the XML default Configuration add following:

    <MachineConfiguration>
    <MachineScripts>
    <PublishPackage>
    <Path>powershell.exe</Path><Arguments>-ExecutionPolicy ByPass -File \\app-v.yourdomain.at\scripts$\Eagle\eagle.ps1</Arguments>
    <Wait Timeout="120" RollbackOnError="true"></Wait>
    </PublishPackage>
    </MachineScripts>
    </MachineConfiguration>
    

    App-V 5.0 – Howto run scripts

    The way you deploy scripts on App-V 5.0 changed a lot in front of App-V 4.6. I tried a lot to get scripts working. This howto is maybe not the best solution but for me it works now well. So let’s beginn.

    First of all you need a file share where you can place your scripts. For example:

    \\app-v.yourdomain.at\scripts$
    

    Attention: On this share “Everybody” must have read rights!

    In our example i have a program that should copy some files to the Windows folder. So i created a folder with the software name (in my case “Celcat”) and put in the files i want to copy.

    appv_script1

    In the SysWOW64 folder are my files which i want to copy. The other file “celcat.ps1” is the script. This is our script. Here is the content of my celcat.ps1 script:

    Copy-Item '\\app-v.yourdomain.at\scripts$\Celcat\SysWOW64\*' 'C:\Windows\SysWOW64\' -Recurse -Force
    

    After that you can login to your Admin Console through the Web Browser. Then select your Application and with right click select: “edit default configuration“. Then click on “(4) Advanced” and then “Export configuration“. Now you can save the .xml file on your computer.

    appv_script2

    I highly recommend to use an XML Editor. We must add now our script. These are the lines we must add:

    <MachineScripts>
      <PublishPackage>
        <Path>powershell.exe</Path>
        <Arguments>-ExecutionPolicy ByPass -File \\app-v.yourdomain.at\scripts$\Celcat\celcat.ps1</Arguments><Wait Timeout="120" RollbackOnError="true"></Wait>
      </PublishPackage>
    </MachineScripts>
    

    The full .xml file you can find here.

    For the Server side we are now finished. Now we can configure our Client to run the script. We must enable scripts on the client with following command:

    Set-AppvClientConfiguration -EnablePackageScripts $true
    

    After that we can run the Publishing Command:

    Publish-AppvClientPackage -Name * -Global
    

    Now the script should run and you can look in your Windows folder if the files are now present. You can see the result of the script status in the Event Viewer.

    Usefull stuff

    You can add the option to publishing all applications on login, when you add a App-V Publishing Server. Use this command:

    Set-ExecutionPolicy unrestricted
    Import-Module AppvClient
    Add-AppvPublishingServer -Name app-v.yourdomain.at -URL http://app-v.yourdomain.at:12346 -GlobalRefreshEnabled $true -GlobalRefreshOnLogon $true