SCCM Powershell डिटेक्शन स्क्रिप्ट किस संदर्भ में चलती है?


11

मुझे AllSignedनिष्पादन नीति वाले क्लाइंट्स पर PowerShell डिटेक्शन स्क्रिप्ट का उपयोग करके आखिरकार सफलता मिली है । (संकेत: यह नवीनतम सर्विस पैक स्थापित करने और एडम मेल्टज़र के वर्कअराउंड का उपयोग करने के बाद काम करना शुरू कर दिया है ।)

अब यह अनुप्रयोग का पता लगाने के लिए PowerShell स्क्रिप्ट का उपयोग करने के लिए व्यावहारिक है, यह मुझे निम्नलिखित चीजों को आश्चर्यचकित करता है:

  1. SCCM क्लाइंट किस संदर्भ में PowerShell डिटेक्शन स्क्रिप्ट चलाता है? सिस्टम? उपयोगकर्ता?
  2. क्या संदर्भ इस बात पर निर्भर करता है कि आप तैनाती प्रकार में "उपयोगकर्ता के लिए इंस्टॉल करें" या "सिस्टम के लिए इंस्टॉल करें" का चयन करें?

इस विषय पर प्रलेखन बहुत विरल है। SCCM PowerShell डिटेक्शन स्क्रिप्ट के लिए मुझे जो सबसे अच्छा संसाधन मिला है वह है यह क्लाऊड ब्लॉग पोस्ट , हालांकि, यह संदर्भ के मामले पर चुप है।

जवाबों:


13

आनुभविक परिणाम

मैंने कुछ PowerShell लिखा, जो एक डिटेक्शन स्क्रिप्ट के रूप में चलने पर, पर्यावरण चर को डंप करता है जो कि डिटेक्शन स्क्रिप्ट लॉग फ़ाइल में देखता है। वह स्क्रिप्ट इस उत्तर के अंत में है।

मैं तब SCCM क्लाइंट द्वारा अलग-अलग "इंस्टॉलेशन बिहेवियर" और "लॉगऑन आवश्यकता" पैरामीटर के साथ एक परिनियोजन प्रकार को तैनात करके इस स्क्रिप्ट को चलाने का कारण बनता हूं। परिणाम नीचे दी गई तालिका में हैं:

Test InstallationBehavior LogonRequirement                   DeployedTo LoggedOnUser ScriptRunAs
---- -------------------- ----------------                   ---------- ------------ -----------     
1.1a Install for user     Only when a user is logged on      un2        un2          un2        
1.1b Install for user     Only when a user is logged on      cn1        un2          un2        
1.1c Install for user     Only when a user is logged on      cn1        un1          un1        
1.2a Install for system   Only when a user is logged on      un2        un2          un2        
1.2b Install for system   Only when a user is logged on      cn1        un2          cn1        
1.2c Install for system   Only when a user is logged on      cn1        un1          cn1        
1.3a Install for system   Whether or not a user is logged on un2        un2          un2        
1.3b Install for system   Whether or not a user is logged on cn1        un2          cn1        
1.3c Install for system   Whether or not a user is logged on cn1        un1          cn1        
  • unX उपयोगकर्ता नाम हैं
  • cnX कंप्यूटर के नाम हैं

विश्लेषण

उपरोक्त परिणाम आश्चर्यचकित करने वाले हैं क्योंकि संदर्भ जो कि एक स्क्रिप्ट का पता चलता है, भाग पर निर्भर करता है कि अनुप्रयोग उपयोगकर्ता या सिस्टम पर तैनात किया गया था या नहीं। यह पर्याप्त आश्चर्य था कि मैंने दूसरी बार परीक्षण चलाए। परिणाम लगातार थे।

हम उपरोक्त तालिका से निम्नलिखित परिकल्पनाओं को अस्थायी रूप से आकर्षित कर सकते हैं:

  1. जब कोई अनुप्रयोग किसी उपयोगकर्ता के लिए लागू किया जाता है, तो उस अनुप्रयोग के लिए एक PowerShell खोज स्क्रिप्ट उस उपयोगकर्ता के रूप में चलाई जाती है।
  2. जब किसी अनुप्रयोग को सिस्टम में तैनात किया जाता है और सिस्टम के लिए परिनियोजन प्रकार स्थापित किया जाता है, तो उस अनुप्रयोग के लिए एक PowerShell खोज स्क्रिप्ट सिस्टम के रूप में चलाई जाती है।
  3. जब किसी अनुप्रयोग को एक सिस्टम पर तैनात किया जाता है और उपयोगकर्ता के लिए परिनियोजन प्रकार स्थापित किया जाता है, तो उस अनुप्रयोग के लिए एक PowerShell खोज स्क्रिप्ट लॉग-इन उपयोगकर्ता के रूप में चलाई जाती है।

उपरोक्त तीन परिकल्पनाओं को परीक्षण के परिणामों का समर्थन है। कुछ अन्य चर भी हो सकते हैं जिनका परीक्षण नहीं किया गया था जहाँ ये परिकल्पनाएँ नहीं हैं। वे कम से कम, PowerShell डिटेक्शन स्क्रिप्ट का उपयोग करते समय प्रारंभिक मान्यताओं का एक अच्छा सेट हैं।

बेमेल संबंध (खबरदार!)

जेसन सैंडिस ने अधिष्ठापन संदर्भ के नियमों के समान परीक्षण का दस्तावेजीकरण किया। यदि आप उस पोस्ट को ध्यान से पढ़ते हैं, तो आप देख सकते हैं कि इंस्टॉलेशन संदर्भ और स्क्रिप्ट स्क्रिप्ट का पता लगाने के नियम समान नहीं हैं। यहाँ आपत्तिजनक नियम हैं:

जब एक एप्लिकेशन का इंस्टॉलेशन व्यवहार "सिस्टम के रूप में इंस्टॉल करें" पर सेट होता है, तो इंस्टॉलर को सिस्टम के रूप में चलाया जाता है [उपयोगकर्ता की तैनाती की परवाह किए बिना]।

जब कोई एप्लिकेशन किसी उपयोगकर्ता के लिए तैनात किया जाता है, तो उस एप्लिकेशन के लिए एक PowerShell खोज स्क्रिप्ट उस उपयोगकर्ता के रूप में चलाई जाती है [चाहे स्थापना व्यवहार "सिस्टम के रूप में स्थापित करें" पर सेट हो]।

इसका मतलब यह है कि एक एप्लिकेशन जिसमें इंस्टॉलेशन व्यवहार "सिस्टम के रूप में इंस्टॉल करें" और एक उपयोगकर्ता संग्रह में तैनात है, इंस्टॉलेशन के लिए सिस्टम संदर्भ का उपयोग करेगा, लेकिन पता लगाने के लिए उपयोगकर्ता संदर्भ।

किसी ऐसे व्यक्ति के लिए, जहां इंस्टॉलेशन बिहेवियर "सिस्टम के रूप में इंस्टॉल हो" के लिए डिटेक्शन राइटिंग डिटेक्शन सिस्टम और उपयोगकर्ता संदर्भों के बीच परिवर्तन करने वाले पर्यावरण के किसी भी हिस्से पर भरोसा करने से बचने के लिए सावधान रहना चाहिए। अन्यथा, सिस्टम संग्रह में तैनात किसी अनुप्रयोग का पता लगाना सफल हो सकता है, जबकि उपयोगकर्ता संग्रह में तैनात ठीक उसी अनुप्रयोग का पता लगाना विफल रहता है।

लिपि

function Write-EnvToLog
{
    $appName = 'script-detect-test'

    $logFolderPath = "c:\$appName-$([System.Environment]::UserName)"

    if ( -not (Test-Path $logFolderPath -PathType Container) )
    {
        New-Item -Path $logFolderPath -ItemType Directory | Out-Null
    }

    if ( -not (Test-Path $logFolderPath -PathType Container ) )
    {
        return
    }

    $logFileName = "$appName`__$((Get-Date).ToString("yyyy-MM-dd__HH-mm-ss")).txt"

    $fp = "$logFolderPath\$logFileName"

    Get-ChildItem Env: | Out-File $fp | Out-Null

    return $true
}

try
{
    if ( Write-EnvToLog ) { "Detected!" }
    [System.Environment]::Exit(0)
}
catch
{
    [System.Environment]::Exit(0)
}

एक ठोस SCCM प्रश्न और उत्तर के लिए +1। मुझे उम्मीद है कि यहां SCCM समुदाय बढ़ता है क्योंकि यह वास्तव में एकमात्र चीज है जिसके लिए मैं एक नज़र रखता हूं (टैग के लिए ईमेल सदस्यता।) यहां, उन्हें एम कॉमिन रखने के लिए प्रेरणा के रूप में कुछ अतिरिक्त प्रतिनिधि हैं।
एमडीमोहोर 313

2
धन्यवाद @BigHomie मैं SCCM के लिए भी फ़िल्टर कर रहा हूँ ... लेकिन मुझे एक गुच्छा याद है क्योंकि मोबाइल पर उस फ़िल्टर्ड स्ट्रीम को प्राप्त करने का कोई व्यावहारिक तरीका नहीं है ।
alx9r

2
उत्कृष्ट SCCM प्रश्न! आओ @BigHomie और मैं - [sccm] टैग के संरक्षक। सचमुच हम में से एक जोड़े हैं।

डार स्किप्पी, @kce ने विंडोज टैग के इस तरफ भी सबसे अच्छे सवाल किए हैं।
MDMoore313
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.