Benutzer mit den meisten Antworten
Selbsterstelle Detection Methode

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 fileMit 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.
Antworten
-
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.
- Bearbeitet Evgenij Smirnov Donnerstag, 18. Januar 2018 09:17
- Als Antwort markiert Michael Allerstorfer Dienstag, 23. Januar 2018 12:35
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.
-
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.
- Bearbeitet Evgenij Smirnov Donnerstag, 18. Januar 2018 09:17
- Als Antwort markiert Michael Allerstorfer Dienstag, 23. Januar 2018 12:35
-
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
-
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
-
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.