Aracılığıyla paylaş


Intune'da Windows Cihazlarında PowerShell Betiklerini Kullanma

powershell betiklerini Intune yüklemek için Microsoft Intune yönetim uzantısını kullanın. Ardından bu betikleri Windows cihazlarında çalıştırın. Yönetim uzantısı MDM'yi geliştirir ve modern yönetime geçmeyi kolaylaştırır.

Not

Windows için Intune yönetim uzantısı hakkında bilgi için bkz. Windows için Intune yönetim uzantısı.

Başlamadan önce

  • Yönetici haklarıyla kullanıcı bağlamı olarak ayarlanan betikler, PowerShell'i varsayılan olarak yönetici ayrıcalığı altında çalıştırır.

  • Son kullanıcıların PowerShell betiklerini yürütmek için cihazda oturum açması gerekmez.

  • Intune yönetim uzantısı, her yeniden başlatmadan sonra yeni betikler veya değişiklikler olup olmadığını denetler. İlkeyi Microsoft Entra gruplarına atadıktan sonra PowerShell betiği çalıştırılır ve çalıştırma sonuçları bildirilir. Betik yürütülürken, betikte veya ilkede bir değişiklik olmadığı sürece yeniden yürütülemez. Betik başarısız olursa, Intune yönetim uzantısı sonraki üç ardışık Intune yönetim uzantısı iadeleri için betiği üç kez yeniden dener.

  • Cihaza atanan PowerShell betikleri, oturum açma işleminin devre dışı bırakıldığı çok oturumlu SKU'lar dışında oturum açabilen her yeni kullanıcı için çalıştırılır.

  • PowerShell betikleri Win32 uygulamaları çalışmadan önce yürütülür. Başka bir deyişle, önce PowerShell betikleri yürütülür. Ardından Win32 uygulamaları yürütülür.

  • PowerShell betikleri 30 dakika sonra zaman aşımına uğradı.

Önemli

PowerShell betikleri ve Düzeltme betikleri kullanılırken gizlilik farkındalığı için en iyi yöntemler şunlardır:

  • Betiklere (parolalar gibi) herhangi bir tür hassas bilgi eklemeyin
  • Betiklere kişisel verileri eklemeyin
  • Cihazlardan kişisel veri toplamak için betik kullanmayın
  • Gizlilikle ilgili en iyi yöntemleri her zaman takip edin

İlgili bilgiler için bkz. Düzeltmeler.

Önkoşullar

  • Intune yönetim uzantısı, kullanıcıya veya cihaza bir PowerShell betik uygulaması atandığında otomatik olarak yüklenir. Daha fazla bilgi için bkz. Windows için Intune yönetim uzantısı.

Önemli

Intune yönetim uzantısını çalıştıran istemcilere dağıtılan betikler, cihazın sistem saati aylara veya yıllara göre fazla güncel değilse çalıştırılamaz. Sistem saati güncel duruma getirildikten sonra betik beklendiği gibi çalışır.

Betik ilkesi oluşturma ve atama

  1. Microsoft Intune yönetim merkezinde oturum açın.

  2. Cihaz>Betikleri ve düzeltmeleriPlatform betikleri>>Ekle>Windows 10 ve üzerini seçin.

    Windows cihazı için yeni betik oluşturmayı gösteren ekran görüntüsü.

  3. Temel Bilgiler'de aşağıdaki özellikleri girin ve İleri'yi seçin:

    • Ad: PowerShell betiği için bir ad girin.
    • Açıklama: PowerShell betiği için bir açıklama girin. Bu ayar isteğe bağlıdır ancak önerilir.
  4. Betik ayarları'nda aşağıdaki özellikleri girin ve İleri'yi seçin:

    • Betik konumu: PowerShell betiğine göz atın. Betik 200 KB'tan (ASCII) küçük olmalıdır.

    • Oturum açmış kimlik bilgilerini kullanarak bu betiği çalıştırın: Betiği cihazda kullanıcının kimlik bilgileriyle çalıştırmak için Evet (varsayılan) seçeneğini belirleyin. Betiği sistem bağlamında çalıştırmak için Hayır'ı seçin. Birçok yönetici Evet'i seçer. Betiğin sistem bağlamında çalışması gerekiyorsa Hayır'ı seçin.

    • Betik imzası denetimini zorunlu kılma: Betiğin güvenilir bir yayımcı tarafından imzalanması gerekiyorsa Evet (varsayılan) seçeneğini belirleyin. Betiğin imzalanması için bir gereksinim yoksa Hayır'ı seçin.

    • Betiği 64 bit PowerShell ana bilgisayarında çalıştırma: Betiği 64 bit bir PowerShell konasında 64 bit istemci mimarisinde çalıştırmak için Evet'i seçin. Hayır (varsayılan) seçeneğini belirleyerek betiği 32 bit PowerShell konasında çalıştırır.

      Evet veya Hayır olarak ayarlanırken, yeni ve mevcut ilke davranışı için aşağıdaki tabloyu kullanın:

      Betiği 64 bit konakta çalıştırma İstemci mimarisi Yeni betik Mevcut ilke betiği
      Hayır 32 bit 32 bit PowerShell konağı desteklenir Yalnızca 32 bit ve 64 bit mimarilerde çalışan 32 bit PowerShell ana bilgisayarında çalışır.
      Evet 64 bit 64 bit mimariler için betiği 64 bit PowerShell ana bilgisayarında çalıştırır. 32 bit üzerinde çalıştırıldığında betik 32 bit PowerShell konaklarında çalışır. Betiği 32 bit PowerShell ana bilgisayarında çalıştırır. Bu ayar 64 bit olarak değişirse, betik 64 bit PowerShell konasında açılır (çalışmaz) ve sonuçları raporlar. 32 bit üzerinde çalıştırıldığında, betik 32 bit PowerShell ana bilgisayarında çalışır.
  5. Kapsam etiketleri'ne tıklayın. Kapsam etiketleri isteğe bağlıdır. Dağıtılmış BT'nin daha fazla bilgiye sahip olması için rol tabanlı erişim denetimi ve kapsam etiketlerini kullanın.

    Kapsam etiketi eklemek için:

    • Kapsam etiketlerini> seç'i seçin listeden > mevcut bir kapsam etiketini seçin Seç'i seçin.

    • İşiniz bittiğinde İleri'yi seçin.

  6. Atamalar>Eklenecek grupları seçin'i seçin. Mevcut Microsoft Entra grupları listesi gösterilir.

    • Cihazları betiği alan kullanıcıları içeren bir veya daha fazla grup seçin. Seç'i seçin. Seçtiğiniz gruplar listede gösterilir ve ilkenizi alır.

      Not

      Intune'daki PowerShell betikleri Microsoft Entra cihaz güvenlik gruplarına veya Microsoft Entra kullanıcı güvenlik gruplarına hedeflenebilir. Ancak, çalışma alanına katılmış (WPJ) cihazları hedeflerken yalnızca Microsoft Entra cihaz güvenlik grupları kullanılabilir (kullanıcı hedefleme yoksayılır).

    • İleri'yi seçin.

      powershell betiğini Microsoft Intune cihaz gruplarına atama veya dağıtma

  7. Gözden geçir + ekle bölümünde, yapılandırdığınız ayarların özeti gösterilir. Betiği kaydetmek için Ekle'yi seçin. Ekle'yi seçtiğinizde, ilke seçtiğiniz gruplara dağıtılır.

Senaryo - Betik çalıştırılamıyor

08:00

  • Teslim etme
  • ConfigScript01 betiğini çalıştırma
  • Betik başarısız oluyor

09:00

  • Teslim etme
  • ConfigScript01 betiğini çalıştırma
  • Betik başarısız oluyor (yeniden deneme sayısı = 1)

10:00

  • Teslim etme
  • ConfigScript01 betiğini çalıştırma
  • Betik başarısız oluyor (yeniden deneme sayısı = 2)

11:00

  • Teslim etme
  • ConfigScript01 betiğini çalıştırma
  • Betik başarısız oluyor (yeniden deneme sayısı = 3)

12:00

  • Teslim etme
  • ConfigScript01betiğini çalıştırmak için başka bir girişimde bulunulmamaktadır.
  • Betikte başka bir değişiklik yapılmazsa, betiği çalıştırmak için başka bir girişimde bulunulmamaktadır.

Çalıştırma durumunu izleme

Portalda kullanıcılar ve cihazlar için PowerShell betiklerinin çalışma durumunu izleyebilirsiniz.

PowerShell betiklerinde, izlenecek betiği seçin, İzleyici'yi seçin ve ardından aşağıdaki raporlardan birini seçin:

  • Cihaz durumu
  • Kullanıcı durumu

Not

Platform betikleri için Intune yönetim merkezinden yapılan cihaz durumu dışarı aktarma işlemleri artık Intune Dışarı Aktarma API'sini kullanır ve CSV sütun adları API şemasıyla hizalanır.

Betiği silme

PowerShell betiklerinde betiği sağ tıklatın ve Sil'i seçin.

Yaygın sorunlar ve çözümleri

Sorun: PowerShell betikleri çalışmıyor

Olası çözümler:

  • PowerShell betikleri her oturum açmada çalışmaz. Çalışır:

    • Betik bir cihaza atandığında

    • Betiği değiştirirseniz karşıya yükleyin ve betiği bir kullanıcıya veya cihaza atayın

      İpucu

      Microsoft Intune Yönetim Uzantısı, Hizmetler uygulamasında (services.msc) listelenen diğer hizmetlerde olduğu gibi cihazda çalışan bir hizmettir. Bir cihaz yeniden başlatıldıktan sonra bu hizmet yeniden başlatılabilir ve Intune hizmetiyle atanan PowerShell betiklerini denetleyebilir. Microsoft Intune Yönetim Uzantısı hizmeti El ile olarak ayarlanırsa, cihaz yeniden başlatıldıktan sonra hizmet yeniden başlatılamayabilir.

  • Cihazların Microsoft Entra ID katıldığından emin olun. Yalnızca Microsoft Entra ID'da iş yeriniz veya kuruluşunuza kayıtlı cihazlar betikleri almaz.

  • Intune yönetim uzantısının adresine indirildiğinden emin olmak için%ProgramFiles(x86)%\Microsoft Intune Management Extension.

  • Betikler Surface Hubs veya Windows'ta S modunda çalışmaz.

  • Hatalar için günlükleri gözden geçirin. Bkz. Intune yönetim uzantısı günlükleri (bu makalede).

  • Olası izin sorunları için PowerShell betiğinin özelliklerinin olarak Run this script using the logged on credentialsayarlandığından emin olun. Ayrıca oturum açmış kullanıcının betiği çalıştırmak için uygun izinlere sahip olup olmadığını denetleyin.

  • Betik oluşturma sorunlarını yalıtmak için şunları yapabilirsiniz:

    • Cihazlarınızda PowerShell yürütme yapılandırmasını gözden geçirin. Yönergeler için bkz. PowerShell yürütme ilkesi .

    • Intune yönetim uzantısını kullanarak örnek bir betik çalıştırın. Örneğin, dizini oluşturun C:\Scripts ve herkese tam denetim verin. Aşağıdaki komut dosyasını çalıştırın:

      write-output "Script worked" | out-file c:\Scripts\output.txt
      

      Başarılı olursa, output.txt oluşturulmalıdır ve "Betik çalıştı" metnini içermelidir.

    • Intune olmadan betik yürütmeyi test etmek için psexec aracını yerel olarak kullanarak Betikleri Sistem hesabında çalıştırın:

      psexec -i -s

    • Betik başarılı olduğunu bildirirse ancak gerçekten başarılı olmadıysa virüsten koruma hizmetiniz AgentExecutor korumalı alanı olabilir. Aşağıdaki betik her zaman Intune bir hata bildirir. Test olarak şu betiği kullanabilirsiniz:

      Write-Error -Message "Forced Fail" -Category OperationStopped
      mkdir "c:\temp"
      echo "Forced Fail" | out-file c:\temp\Fail.txt
      

      Betik başarılı olduğunu bildirirse hata çıkışını AgentExecutor.log onaylamak için dosyasına bakın. Betik yürütülürse uzunluk 2 olmalıdır >.

    • ve .output dosyalarını yakalamak .error için aşağıdaki kod parçacığı, betiği AgentExecutor aracılığıyla PowerShell x86 ()C:\Windows\SysWOW64\WindowsPowerShell\v1.0 ile yürütür. Gözden geçirmeniz için günlükleri tutar. Intune Yönetim Uzantısı'nın betik yürütülürken günlükleri temizleytiğini unutmayın:

      $scriptPath = read-host "Enter the path to the script file to execute"
      $logFolder = read-host "Enter the path to a folder to output the logs to"
      $outputPath = $logFolder+"\output.output"
      $errorPath =  $logFolder+"\error.error"
      $timeoutPath =  $logFolder+"\timeout.timeout"
      $timeoutVal = 60000
      $PSFolder = "C:\Windows\SysWOW64\WindowsPowerShell\v1.0"
      $AgentExec = "C:\Program Files (x86)\Microsoft Intune Management Extension\agentexecutor.exe"
      &$AgentExec -powershell  $scriptPath $outputPath $errorPath $timeoutPath $timeoutVal $PSFolder 0 0
      

Sorun: Windows artık yönetilmese bile betikler neden çalışıyor?

Atanmış betiklere sahip bir Windows cihazı artık yönetilmediğinde, IME hemen kaldırılmaz. IME, Windows'un bir sonraki IME iadesinde (genellikle 8 saatte bir) yönetilmediğini algılar ve betik çalıştırmalarını iptal eder. Bu arada, yerel olarak depolanan tüm betikler çalıştırılabilir. IME iade edemediğinde, 24 saate kadar (cihaz uyku süresi) iadeyi yeniden denenir ve ardından kendisini Windows cihazından kaldırır.

Sonraki adımlar

Profillerinizi izleyin ve sorun giderin.