none
Selbsterstelle Detection Methode RRS feed

  • Frage

  • Hallo!

    Ich soll für ein Programm eine Desktopverknüpfung erstellen und diese dann per SCCM ausrollen.

    Mein Script sieht wie folgt aus:

    $Shell = New-Object -ComObject ("WScript.Shell")
    $ShortCut = $Shell.CreateShortCut("\\beispieldomäne\$env:USERNAME\upm_profile\desktop\Boardmaker Lokal.lnk")
    $ShortCut.TargetPath = "${env:ProgramFiles(x86)}\boardmaker\6.1.4.0\BM_SDP.exe"
    $ShortCut.WorkingDirectory = "${env:ProgramFiles(x86)}\boardmaker\6.1.4.0\BM_SDP.exe";
    $ShortCut.WindowStyle =1;#$ShortCut.HotKey = "CTRL+5"
    #$ShortCut.IconLocation= "${env:ProgramFiles(x86)}\boardmaker\6.1.4.0\BM_SDP.exe\boardmaker.ico"
    $ShortCut.Save()

    if(Test-Path ("\\beispieldomäne\$env:USERNAME\upm_profile\detection"){echo "alright"}                                                    else {New-Item "\\beispieldomäne\$env:USERNAME\upm_profile\detection " -ItemType directory}                                          
    New-Item "\\beispieldomäne\$env:USERNAME\upm_profile\detection\boardmakerdetection.txt "  -ItemType file

    Mit diesem Script erstell ich ein Desktopicon und erstelle eine Datei im Userprofil. Auf diese Datei möchte ich dann die Detection machen. Dafür gehe ich unter "Deployment Type" auf "Detection Method" und verwende den unteren Punkt "Use a custom script to detect the presence of this deployment type"

    Dann verwende ich Powershell und schreibe mein kurzes Script, das nur auf das eine File detecten soll das ich oben erstellt habe:

    if(Test-Path "\\beispieldomäne\$env:USERNAME\upm_profile\detection\boardmakerdetection.txt"){echo 0}

    else {echo "da stimmt was nicht"}

    Wenn ich das dann so ausrolle passiert einfach gar nichts. Er ladet die Application nicht in den ccmcache sonder schreibt gleich von anfang an das es bereits installiert ist. Wenn ich aber nachsehe ist weder das File erstellt noch das Icon ist vorhanden.

    Könnte mir bitte jemand behilflich sein. Ich habe leider nicht vergleichbares gefunden.

    Mittwoch, 17. Januar 2018 15:20

Antworten

Alle Antworten

  • Spricht etwas gegen die Verwendung eines Package anstelle einer Application? Das Handling wäre da viel einfacher, da die Detection Method entfällt.

    Simon Dettling | msitproblog.com | @SimonDettling

    Please remember to mark the post(s), which answered your question.

    Donnerstag, 18. Januar 2018 09:04
  • Moin,

    Dein Detection-Skript darf NICHTS zurückgeben, wenn die Datei noch nicht da ist. Nicht 0, nicht $null, nicht $false, sondern NICHTS.

    EDIT: Und ja, ich weiß, dass es millionenfach im Netz anders dokumentiert ist ;-)


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> https://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com


    In theory, there is no difference between theory and practice. In practice, there is.


    Donnerstag, 18. Januar 2018 09:16
  • Nicht 0, nicht $null, nicht $false, sondern NICHTS



    Genau. In dem Beispiel dann

    if(Test-Path \\beispieldomäne\$env:USERNAME\upm_profile\detection\boardmakerdetection.txt){} else {echo "da stimmt was nicht"}

    Siehe dazu auch https://docs.microsoft.com/en-us/sccm/apps/deploy-use/create-applications#Use-a-custom-script-to-check-for-the-presence-of-a-deployment-type


    Torsten Meringer | http://www.mssccmfaq.de

    Freitag, 19. Januar 2018 06:42
    Beantworter
  • Hallo

    Diese Tabelle hat uns geholfen das mit den Powershell Detections zu begreifen :)

    Script exit code (Ende vom Script) Data read from STDOUT (Write-Host) Data read from STDERR (oder Write-Host als Catch or Else) Script result Application detection state
    Empty Empty Success Not installed
    Empty Not empty Failure Unknown
    Not empty Empty Success Installed
    Not empty Not empty Success Installed
    Non-zero value Empty Empty Failure Unknown
    Non-zero value Empty Not empty Failure Unknown
    Non-zero value Not empty Empty Failure Unknown
    Non-zero value Not empty Not empty Failure Unknown

    Gleichzeitig kannst du aber auch die Existenz des Shortcuts prüfen, ich geh davon aus das dieser Shortcut für alle User auf dem Rechner zur Verfügung steht?

    if(Test-Path "C:\Users\Public\Desktop\mein shortcut.lnk")
    {
        Write-Host "Installed"
    }
    else
    {
        Clean-Host #räumt alle Meldungen weg womit auf jeden Fall ein "Nichts" zurückkommt
    }
    Gruess Mirco



    Migros Genossenschaftsbund Zürich

    Freitag, 19. Januar 2018 08:38
  • Warum kopierst du nicht einfach eine vorher erstellte Verknüpfung mit XCOPY nach public\desktop und prüfst dann ob die Datei existiert?
    Freitag, 19. Januar 2018 12:17
  • So wie ich Packages verstanden haben werden die nur einmal ausgerollt. 

    Wie verhält sich das wenn ein neuer User dazu kommt, hollt er sich dann das Package?

    Dienstag, 23. Januar 2018 12:30
  • Danke für die Tabelle. Ich werde sie in Zukunft einsetzen.
    Dienstag, 23. Januar 2018 12:34
  • Weil die Verknüpfungen nur Spezielle User bekommen, sich aber andere auch auf dem PC anmelden.

    Wir arbeiten mit FolderyDirection. Daher muss die Verknüpfung am User Desktop liegen. SCCM kann soweit ich weiß keine Userprofile detecten daher brauchte ich ein Script dazu.

    Dienstag, 23. Januar 2018 12:35
  • Vielen dank. Der Artikel hat mir geholfen das besser zu verarbeiten.
    Dienstag, 23. Januar 2018 12:37