{"id":640,"date":"2018-03-22T15:53:40","date_gmt":"2018-03-22T14:53:40","guid":{"rendered":"http:\/\/lukas.kurth.rocks\/blog\/?p=640"},"modified":"2018-03-22T15:53:40","modified_gmt":"2018-03-22T14:53:40","slug":"sccm-hidden-operating-system-deployment","status":"publish","type":"post","link":"https:\/\/lukas.kurth.rocks\/blog\/2018\/03\/22\/sccm-hidden-operating-system-deployment\/","title":{"rendered":"SCCM Hidden Operating System Deployment"},"content":{"rendered":"<p>Sodele,<\/p>\n<p>wieder etwas aktuelles:<\/p>\n<p>Ich habe intern die neue <strong><a href=\"https:\/\/insider.windows.com\/de-de\/for-business-getting-started-server\/\">Windows Server 2019 Insider Preview Build<\/a><\/strong> eingepflegt. Diese soll allerdings nicht f\u00fcr alle Workstations erreichbar sein, auch wenn die Collection ausgew\u00e4hlt wurde, sondern nur durch ein &#8222;Hintert\u00fcrchen&#8220;, wenn man dies so nennen m\u00f6chte.<\/p>\n<p><em><strong>Als Anmerkung<\/strong><\/em>: Ich mag keine VBS L\u00f6sungen. Das \u00fcberm\u00e4chtige <strong><span style=\"color: #0000ff;\">PowerShell<\/span> <\/strong>ist mir da doch lieber. Ich werde mir da demn\u00e4chst mal etwas kleines zusammen basteln. Wenn es klappt, setze ich dies hier hinein.<\/p>\n<p>Als erstes m\u00fcssen wir das hinterlegte Boot-Image anpassen.<\/p>\n<p><span style=\"text-decoration: underline;\"><span style=\"color: #ff0000; text-decoration: underline;\"><strong>Achtung:<\/strong><\/span><\/span> Damit nichts wichtiges gef\u00e4hrdet wird, sollte die boot.wim gesichert werden!<\/p>\n<h3>Schritt 1: Boot.WIM einbinden<\/h3>\n<pre class=\"toolbar:2 show-title:false wrap:true lang:ps decode:true\">DISM \/mount-wim \/wimfile:\"\\\\SCCM-Server\\SMS_LKR\\OSD\\boot\\x64\\boot.wim\" \/index:1 \/mountdir:C:\\WinPEMount\\X64\\<\/pre>\n<p>Den entsprechenden Pfad einfach anlegen. WinPEMount gibt es schlie\u00dflich nicht. Die Angabe des Index ist erforderlich, auch wenn nur ein Index existiert.<\/p>\n<h3>Schritt 2: Daten in den tempor\u00e4ren Pfad kopieren<\/h3>\n<pre class=\"toolbar:2 show-title:false wrap:true lang:ps decode:true\">copy '\\\\SCCM-Server\\SMSStore\\SWDepot\\OSD\\Tools\\hidden_boot_images\\devel.vbs' C:\\WinPEMount\\X64\\Windows\\System32\\ -verbose<\/pre>\n<p>Kopiert wird hier die <strong>devel.vbs<\/strong> [LINK FOLGT]. In diesem Script wird eine tempor\u00e4re Datei angelegt, die nach der Eingabe des Kennwortes \u00fcberpr\u00fcft wird. Ich schaue hier aber auch noch, ob ich nicht ein PowerShell Tool schreibe.<\/p>\n<h3>Schritt 3: \u00c4nderungen an der Boot.WIM best\u00e4tigen<\/h3>\n<pre class=\"toolbar:2 show-title:false wrap:true lang:ps decode:true\">DISM \/unmount-wim \/mountdir:c:\\WinPEMount\\x64 \/commit<\/pre>\n<h3>Schritt 4: Boot Image im SCCM bearbeiten<\/h3>\n<p>Als Prestart Command folgendes eingeben:<\/p>\n<pre class=\"toolbar:2 show-title:false lang:vb decode:true \">cscript.exe \/\/nologo check_hidden.vbs<\/pre>\n<p>Den Pfad zur <em>check_hidden.vbs<\/em> ausw\u00e4hlen und den &#8222;command support&#8220; aktiveren. Alles soweit best\u00e4tigen und abschlie\u00dfen.<\/p>\n<p>Im SCCM PXE Men\u00fc F8 dr\u00fccken und im Command Prompt &#8222;devel&#8220; eingeben (das Script). Nach Eingabe des Kennwortes folgt eine Prompt zur Eingabe der Deployment ID. Nach dem Best\u00e4tigen wird das Deployment gestartet.<\/p>\n<p>Falls man lieber ein eigenes Script entwickeln m\u00f6chte, l\u00e4sst sich nach der Eingabe des Kennwortes auch mit F8 direkt in der Konsole arbeiten. Hier aber immer mit Bedacht vorgehen \ud83d\ude09<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>Die Scripts<\/strong><\/span>:<\/p>\n<pre class=\"toolbar:1 wrap:true lang:vb decode:true\" title=\"devel.vbs\">Dim env\r\nSet env= CreateObject(\"Wscript.Shell\")\r\nenv.RUN\"cmd \/C \" &amp; CHR(34) &amp;\"netsh int ip show config Local &gt; X:\\hidden.txt \" &amp; CHR(34), 0, True\r\n\r\n'MsgBox \"DEVEL mode Enabled !\"\r\nwscript.quit<\/pre>\n<pre class=\"toolbar:1 wrap:true lang:vb decode:true\" title=\"check_hidden.vbs\">' lukas.kurth.rocks (c) 2018\/03\/22\r\nOption Explicit\r\nDIM fso\r\nSet fso = CreateObject(\"Scripting.FileSystemObject\")\r\n\r\n'Check if Development Mode has been selected\r\nIf (fso.FileExists(\"x:\\hidden.txt\")) Then\r\n  \t'WScript.Echo(\"Development activated, hidden.txt exists!\")\r\n\t' Devel mode was selected so display the Prestart prompt\r\n\tDim env\r\n\tset env = CreateObject(\"Microsoft.SMS.TSEnvironment\")\r\n\tenv(\"SMSTSPreferredAdvertID\") = InputBox (\"Please enter the Task Sequence Deployment ID eg: P0120038 and click [OK] or click [Cancel] to continue.\")\r\n\t'MsgBox \"The following Task Sequence Advertisement ID will be selected: \" &amp; env(\"SMSTSPreferredAdvertID\")\r\nElse\r\n  \t'WScript.Echo(\"The hidden.txt File does not exist so will not change SMSTSPreferredAdvertID!\")\r\nEnd If\r\nWScript.Quit()<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sodele, wieder etwas aktuelles: Ich habe intern die neue Windows Server 2019 Insider Preview Build eingepflegt. Diese soll allerdings nicht f\u00fcr alle Workstations erreichbar sein, auch wenn die Collection ausgew\u00e4hlt wurde, sondern nur durch ein &#8222;Hintert\u00fcrchen&#8220;, wenn man dies so nennen m\u00f6chte. Als Anmerkung: Ich mag keine VBS L\u00f6sungen. Das \u00fcberm\u00e4chtige PowerShell ist mir da [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,19,10],"tags":[],"class_list":["post-640","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-powershell","category-scripting"],"_links":{"self":[{"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/posts\/640","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/comments?post=640"}],"version-history":[{"count":13,"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/posts\/640\/revisions"}],"predecessor-version":[{"id":664,"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/posts\/640\/revisions\/664"}],"wp:attachment":[{"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/media?parent=640"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/categories?post=640"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/tags?post=640"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}