Kopioi ja liitä tämä esimerkkikomentosarja ja muokkaa sitä tarpeen mukaan ympäristössäsi:

<# . SYNOPSIS     Suojatun käynnistyksen tapahtumakokoelman ryhmäkäytäntöobjektin käyttöönottokomentosarja     Ryhmäkäytäntöobjektin luominen ja linkittäminen kokoelman komentosarjan käyttöönottoa varten ajoitettuna tehtävänä

.DESCRIPTION     Tämä komentosarja automatisoi suojatun käynnistyksen tapahtumakokoelman käyttöönoton ryhmäkäytäntö kautta.Se luo ryhmäkäytäntöobjektin, jossa on:     – Ajoitettu tehtävä, joka suorittaa kokoelman komentosarjan päivittäin     - Oikeat käyttöoikeudet kirjoittamiseen keskitettyihin jakoihin     - WMI-suodattimet tiettyjen käyttöjärjestelmäversioiden kohdistamista varten

.PARAMETER GPOName     Uuden ryhmäkäytäntöobjektin nimi

.PARAMETER DomainName     Kohdetoimialueen täydellinen toimialuenime

.PARAMETER OUPath     Ryhmäkäytäntöobjektin linkittämiseen liittyvien OU:iden tunnus.Hyväksyy useita OU:t matriisina. Ei pakollinen, jos -AutoDetectOU on määritetty.

.PARAMETER AutoDetectOU     Siirry vuorovaikutteisesti luetteloon ja valitse OUs Active Directorysta.Kun tämä on määritetty, -OUPath on valinnainen.

.PARAMETER CollectionSharePath     UNC-polku, johon kokoelman tulokset tallennetaan

.PARAMETER ScriptSourcePath     Polku, johon kokoelman komentosarja on tallennettu (kopioidaan SYSVOL-tiedostoon)

.PARAMETER RandomDelayHours     Tuntimäärä, jonka avulla komentosarjojen suoritus levitetään satunnaisesti päätepisteisiin.Tämä estää kaikkia koneita kirjoittamasta jaettuun resurssiin samanaikaisesti.Oletus: 4 tuntia. Kelvollinen alue: 1–24 tuntia.     Suositellut arvot:     - 1–10 000 laitetta: 4 tuntia (oletus)     - 10K-50K-laitteet: 8 tuntia     - yli 50 000 laitetta: 12–24 tuntia

.EXAMPLE     .\Deploy-GPO-SecureBootCollection.ps1 -DomainName "contoso.com" -OUPath "OU=Workstations,DC=contoso,DC=com"

.EXAMPLE     .\Deploy-GPO-SecureBootCollection.ps1 -DomainName "contoso.com" -OUPath "OU=Workstations,DC=contoso,DC=com" -RandomDelayHours 8

.EXAMPLE     .\Deploy-GPO-SecureBootCollection.ps1 -DomainName "contoso.com" -AutoDetectOU     Näyttää kaikki toimialueen OU:t ja pyytää valintaa.     

.EXAMPLE     .\Deploy-GPO-SecureBootCollection.ps1 -DomainName "contoso.com" -OUPath @("OU=Workstations,DC=contoso,DC=com", "OU=Laptops,DC=contoso,DC=com")     Linkittää ryhmäkäytäntöobjektin useisiin alkuperäisiin käyttäjiin yhdellä kertaa.     

.NOTES     Edellyttää: Active Directory PowerShell -moduuli, ryhmäkäytäntö-moduuli     On suoritettava toimialueen Hallinta tai delegoiduilla ryhmäkäytäntöobjektin luontioikeuksilla #>

[CmdletBinding()] param(     [Parameter(Mandatory = $false)]     [merkkijono]$GPOName = "SecureBoot-EventCollection",     [Parametri(Pakollinen = $false)]     [merkkijono]$DomainName,     [Parametri(Pakollinen = $false)]     [merkkijono[]]$OUPath,     [Parametri(Pakollinen = $false)]     [switch]$AutoDetectOU,     [Parameter(Mandatory = $false)]     [string]$CollectionSharePath = "\\$DomainName\NETLOGON\SecureBootLogs",     [Parametri(Pakollinen = $false)]     [merkkijono]$ScriptSourcePath = ".\Detect-SecureBootCertUpdateStatus.ps1",     [Parametri(Pakollinen = $false)]     [ValidateSet("Daily", "Weekly", "AtStartup")]     [merkkijono]$Schedule = "Päivittäin",     [Parametri(Pakollinen = $false)]     [merkkijono]$ScheduleTime = "14:00",     [Parameter(Mandatory = $false)]     [ValidateRange(1, 24)]     [int]$RandomDelayHours = 4 )                                        

#Requires -Modules ActiveDirectory, GroupPolicy #Requires -versio 5.1

$ErrorActionPreference = "Stop" $DownloadUrl = "https://aka.ms/getsecureboot" $DownloadSubPage = Käyttöönotto- ja valvontanäytteet

# ============================================================================ # DEPENDENCY VALIDATION # ============================================================================

function Test-ScriptDependencies {     param(         [Parametri(Pakollinen = $true)]         [merkkijono]$ScriptDirectory,         [Parametri(Pakollinen = $true)]         [merkkijono[]]$RequiredScripts     )     $missingScripts = @()     foreach ($script in $RequiredScripts) {         $scriptPath = Join-Path $ScriptDirectory $script         if (-not (Test-Path $scriptPath)) {             $missingScripts += $script         }     }     if ($missingScripts.Count -gt 0) {         Write-Host ""         Write-Host ("=" * 70) -EtualallaColor Punainen         Write-Host " PUUTTUVAT RIIPPUVUUDET" -EtualallaColor Punainen         Write-Host ("=" * 70) -EtualallaColor Punainen         Write-Host ""         Write-Host "Seuraavia pakollisia komentosarjoja ei löytynyt:" -EtualallaVäri keltainen         foreach ($script in $missingScripts) {             Write-Host " - $script" -Edustaväri Valkoinen         }         Write-Host ""         Write-Host "Lataa uusimmat komentosarjat kohteesta:" -ForegroundColor Cyan         Write-Host "URL: $DownloadUrl" -Edustaväri Valkoinen         Write-Host " Siirry kohteeseen: '$DownloadSubPage'" -Edustaväri Valkoinen         Write-Host ""         Write-Host "Pura kaikki komentosarjat samaan hakemistoon ja suorita uudelleen". -ForegroundColor Yellow         Write-Host ""         palauta $false     }     palauta $true }                             

# The Detect script is required - it gets deployed to endpoints via GPO $requiredScripts = @(     "Detect-SecureBootCertUpdateStatus.ps1" )

if (-not (Test-ScriptDependencies -ScriptDirectory $PSScriptRoot -RequiredScripts $requiredScripts)) {     exit 1 }

# ============================================================================ # TUNNISTA TOIMIALUEEN NIMI AUTOMAATTISESTI # ============================================================================

if (-not $DomainName) {     $DomainName = $env:USERDNSDOMAIN     jos (ei $DomainName) {         # Yritä päästä AD-moduulista         kokeile {             Import-Module ActiveDirectory -ErrorAction Stop             $DomainName = (Get-ADDomain). DNSRoot         } saalis {             Write-Host "VIRHE: toimialueen nimeä ei voitu tunnistaa automaattisesti". -Edustaväri Punainen             Write-Host "Please specify -DomainName parameter". -ForegroundColor Yellow             Write-Host ""             Write-Host "Esimerkki:" -EdustaVäri harmaa             Write-Host ".\Deploy-GPO-SecureBootCollection.ps1 -DomainName contoso.com -AutoDetectOU" -ForegroundColor White             exit 1         }     }     Write-Host "Automaattisesti tunnistettu toimialue: $DomainName" -EdustaväriVäri vihreä }

# Set CollectionSharePath default if not explicitly provided if (-not $PSBoundParameters.ContainsKey('CollectionSharePath')) {     $CollectionSharePath = "\\$DomainName\NETLOGON\SecureBootLogs" }

Write-Host "============================================" -ForegroundColor Cyan Write-Host "Secure Boot Collection - GPO Deployment" -ForegroundColor Cyan Write-Host "============================================" -Edustavärisyan

# Validate prerequisites Write-Host "'n[1/6] Validing prerequisites..." -ForegroundColor Yellow

if (-not (Get-Module -ListAvailable -Name ActiveDirectory)) {     heitä "ActiveDirectory-moduulia ei löydy. Asenna RSAT-työkalut." }

if (-not (Get-Module -ListAvailable -Name GroupPolicy)) {     heitä "GroupPolicy-moduulia ei löydy. Asenna RSAT-työkalut." }

Import-Module ActiveDirectory Import-Module GroupPolicy

# Validate domain connectivity kokeile {     $domain = Get-ADDomain -Server $DomainName     Write-Host " Yhdistetty toimialueeseen: $($domain. DNSRoot)" -ForegroundColor Green } saalis {     kirjoita "Toimialueeseen ei voi muodostaa yhteyttä: $DomainName. Virhe: $_" }

# Handle OU selection jos ($AutoDetectOU) {     Write-Host "'n Discovering OUs in domain..." -ForegroundColor Cyan     $allOUs = Get-ADOrganizationalUnit -Filter * -Server $DomainName |          Sort-Object DistinguishedName |         Select-Object @{N='Indeksi'; E={0}}, Nimi, DistinguishedName     # Määritä indeksit     kohteelle ($i = 0; $i -lt $allOUs.Count; $i++) {         $allOUs[$i]. Indeksi = $i + 1     }     Write-Host "'n Available OUs:" -ForegroundColor Yellow     Write-Host " ---------------------------------------------------------------------" -Edustaväri TummaGray     $allOUs | ForEach-Object {         Write-Host (" {0,3}) {1}" -f $_. Indeksi, $_. DistinguishedName) -ForegroundColor White     }     Write-Host "---------------------------------------------------------------------" -ForegroundColor DarkGray     Write-Host " Vihje: Kirjoita pilkuilla erotetut numerot useiden OU:iden valitsemiseksi (esim. 1,3,5)" -EtualallaColor DarkGray     Write-Host " Enter 'A', jos haluat valita KAIKKI OU:t" -EtualallaColor DarkGray     Write-Host ""     $selection = Read-Host " Linkitä ryhmäkäytäntöobjekti valitsemalla OU(t)     jos ($selection -eq 'A' -tai $selection -eq 'a') {         $OUPath = $allOUs.DistinguishedName         Write-Host " Selected ALL $($OUPath.Count) OUs" -ForegroundColor Green     } muu {         $indices = $selection -split ',' | ForEach-Object { [int]$_. Trim() }         $OUPath = @()         foreach ($idx in $indices) {             $selected = $allOUs | Where-Object { $_. Index -eq $idx }             jos ($selected) {                 $OUPath += $selected. DistinguishedName             } muu {                 Write-Warning "Virheellinen indeksi: $idx – ohittaminen"             }         }     }     jos ($OUPath.Count -eq 0) {         heitä "Ei OU:ita valittuna.                          Keskeytetään."     }          Write-Host "'n Valittu $($OUPath.Count) OU(t):" -EtualallaColor Green     $OUPath | ForEach-Object { Write-Host " - $_" -ForegroundColor Gray }      } elseif (ei $OUPath -tai $OUPath.Count -eq 0) {     kirjoita "Joko -OUPath tai -AutoDetectOU on määritettävä.". } muu {     # Vahvista, että jokainen OU on olemassa     foreach ($path in $OUPath) {         kokeile {             $ou = Get-ADOrganizationalUnit -Identity $path -Server $DomainName             Write-Host " Target OU found: $($ou. Nimi)" -EdustaVäri vihreä         } saalis {             heitä "OU ei löydy: $path"         }     } }

# Validate source script exists if (-not (Test-Path $ScriptSourcePath)) {     heitä "Kokoelman komentosarjaa ei löydy: $ScriptSourcePath" }

# Step 2: Create collection share structure Write-Host "'n[2/6] Kokoelmaresurssin määrittäminen..." -EtualallaColor Keltainen

$sysvolScriptPath = "\\$DomainName\SYSVOL\$DomainName\Scripts\SecureBootCollection"

# Create SYSVOL script folder if (-not (Test-Path $sysvolScriptPath)) {     New-Item -ItemType Directory -Path $sysvolScriptPath -Force | Out-Null     Write-Host " Created SYSVOL script folder: $sysvolScriptPath" -ForegroundColor Green }

# Copy collection script to SYSVOL $destScript = Join-Path $sysvolScriptPath "Detect-SecureBootCertUpdateStatus.ps1"

# Remove existing destination if it's a directory (fix for Copy-Item bug) if (Test-Path $destScript -PathType Container) {     Remove-Item $destScript -Recurse -Force }

Copy-Item -Path $ScriptSourcePath -Destination $destScript -Force Write-Host " Kopioitu kokoelman komentosarja SYSVOL:iin" -EtualallaColor Green

# Create a wrapper script that calls the main script with parameters $wrapperScript = @" # Suojatun käynnistyksen tapahtumakokoelman rivitys # Deploy-GPO-SecureBootCollection.ps1 automaattisesti luoma

`$ErrorActionPreference = 'SilentlyContinue'

# Configuration '$CollectionShare = '$CollectionSharePath' '$ScriptPath = '$sysvolScriptPath\Detect-SecureBootCertUpdateStatus.ps1'

# Run collection with -OutputPath parameter if (Test-Path '$ScriptPath) {     & $ScriptPath -OutputPath -$CollectionShare } muu {     Write-EventLog -LogName Application -Source "SecureBootCollection" -EventId 1001 -EntryType Error -Message "Collection script not found: '$ScriptPath' } " @

$wrapperPath = Join-Path $sysvolScriptPath "Run-SecureBootCollection.ps1" $wrapperScript | Out-File -FilePath $wrapperPath -Encoding UTF8 -Force Write-Host " Luotu rivityskomentosarja" -EdustaväriVäri vihreä

# Create collection share (if on a file server) Write-Host " Kokoelman jakamispolku: $CollectionSharePath" -EtualallaVärisyan Write-Host " HUOMAUTUS: Varmista, että tämä jako on olemassa toimialueen tietokoneiden kirjoitusoikeuden kanssa" -ForegroundColor Yellow

# Step 3: Create the GPO Write-Host "'n[3/6] Creating ryhmäkäytäntö Object..." -ForegroundColor Yellow

# Check if GPO already exists $existingGPO = Get-GPO -Name $GPOName -Domain $DomainName -ErrorAction SilentlyContinue

if ($existingGPO) {     Write-Host ryhmäkäytäntöobjektin $GPOName on jo olemassa. Päivitetään..." -EtualallaColor Keltainen     $gpo = $existingGPO } muu {     $gpo = New-GPO -Name $GPOName -Domain $DomainName -Comment "Deploys Secure Boot event collection script to endpoints"     Write-Host " Luotu ryhmäkäytäntöobjekti: $GPOName" -EtualallaColor Green }

# Step 4: Configure Scheduled Task via GPO Preferences Write-Host "'n[4/6] Ajoitetun tehtävän määrittäminen..." -EtualallaColor Keltainen

# Build the scheduled task XML # RandomDelay levittää suoritusta päätepisteisiin palvelimen ylikuormituksen estämiseksi Write-Host " Satunnainen viive: $RandomDelayHours tuntia (levittää kuormitusta kalustoon)" -EtualallaColor Cyan

$taskTrigger = switch ($Schedule) {     "Päivittäin" {         @"         <CalendarTrigger>           <StartBoundary>2024-01-01T${ScheduleTime}:00</StartBoundary>           <Käytössä>tosi</Käytössä>           <ScheduleByDay>             <DaysInterval>1</DaysInterval>           </ScheduleByDay->           <RandomDelay>PT${RandomDelayHours}H</RandomDelay>         </CalendarTrigger> "@     }     "Viikoittain" {         @"         <CalendarTrigger>           <StartBoundary>2024-01-01T${ScheduleTime}:00</StartBoundary>           <Käytössä>tosi</Käytössä>           <ScheduleByWeek>             <WeeksInterval>1</WeeksInterval>             <DaysOfWeek>               <keskiviikko />             </DaysOfWeek>           </ScheduleByWeek>           <RandomDelay>PT${RandomDelayHours}H</RandomDelay>         </CalendarTrigger> "@     }     "AtStartup" {         # Käynnistyskäynnistimiä varten lisää satunnainen alkamisaika viiveellä         # Jokainen kone käynnistyy 5–(5 + RandomDelayHours*60) minuutin kuluttua käynnistyksen jälkeen         $maxDelayMinutes = 5 + ($RandomDelayHours * 60)         @"         <BootTrigger>           <Käytössä>tosi</Käytössä>           <viive>PT5M</Delay>           <RandomDelay>PT${RandomDelayHours}H</RandomDelay>         </BootTrigger> "@     } }

$scheduledTaskXML = @" <?xml version="1.0" encoding="UTF-16"?> <Tehtävän versio="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">   <RegistrationInfo>     <kuvaus>kerää suojatun käynnistyksen tapahtumatiedot yrityksen väestönlaskentaa varten</Description>     <Author>Enterprise Security</Author>   </RegistrationInfo>   <käynnistää>     $taskTrigger   </Triggers>   <principals>     <Principal id="Author">       <UserId>S-1-5-18</UserId>       <RunLevel>HighestAvailable</RunLevel>     </Principal>   </Principals>   <Asetukset->     <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>     <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>     <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>     <AllowHardTerminate>tosi</AllowHardTerminate>     <AloitusValintojen>tosi</StartWhenAvailable>     <RunOnlyIfNetworkAvailable>true</RunOnlyIfNetworkAvailable>     <IdleSettings>       <StopOnIdleEnd>false</StopOnIdleEnd>       <RestartOnIdle>false</RestartOnIdle>     </IdleSettings->     <AllowStartOnDemand>tosi</AllowStartOnDemand>     <Käytössä>tosi</Käytössä>     <Piilotettu>epätosi</Piilotettu>     <RunOnlyIfIdle>false</RunOnlyIfIdle>     <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>     <UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>     <WakeToRun>epätosi</WakeToRun>     <ExecutionTimeLimit>PT1H</ExecutionTimeLimit>     <Prioriteetti>7</Priority>   </Settings>   <Toiminnot Context="Tekijä">     <Exec>       <Komento>powershell.exe</Komento->       <argumentit>-NoProfile -ExecutionPolicy Bypass -File "$wrapperPath"</Arguments>     </Exec>   </Actions> </Task> " @

# Save task XML to SYSVOL for reference/backup $taskXmlPath = Join-Path $sysvolScriptPath "SecureBootCollection-Task.xml" $scheduledTaskXML | Out-File -FilePath $taskXmlPath -Koodaus Unicode -Force Write-Host " Tallennettu ajoitettu tehtävän XML SYSVOL-muotoon (varmuuskopiointi)" -EdustaväriVäri vihreä

# Inject scheduled task into GPO Preferences Write-Host " Ajoitetun tehtävän lisääminen ryhmäkäytäntöobjektiasetuksiin..." -EtualallaColor Cyan

$gpoId = $gpo.Id.ToString() $gpoPrefPath = "\\$DomainName\SYSVOL\$DomainName\Policies\{$gpoId}\Machine\Preferences\ScheduledTasks"

# Create Preferences folder structure if (-not (Test-Path $gpoPrefPath)) {     New-Item -ItemType Directory -Path $gpoPrefPath -Force | Out-Null }

# Generate unique GUID for the task $taskGuid = [guid]::NewGuid(). ToString("B"). Toupper()

# Build GPO Preferences ScheduledTasks.xml format # Tämä eroaa tehtävien ajoituksen XML-vakiomuodosta – se on GPP-muoto $gppScheduledTasksXml = @" <?xml version="1.0" encoding="utf-8"?> <ScheduledTasks clsid="{CC63F200-7309-4ba0-B154-A71CD118DBCC}">   <TaskV2 clsid="{D8896631-B747-47a7-84A6-C155337F3BC8}" name="SecureBoot-EventCollection" image="0" changed="$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" uid="$taskGuid" userContext="0" removePolicy="0">     <Ominaisuudet-toiminto="C" name="SecureBoot-EventCollection" runAs="NT AUTHORITY\System" logonType="S4U">       <Tehtävän versio="1.3">         <RegistrationInfo>           <Author>Enterprise Security</Author>           <kuvaus>kerää suojatun käynnistyksen varmenteen tilan yrityksen vaatimustenmukaisuuden valvontaa varten</Description>         </RegistrationInfo>         <principals>           <Principal id="Author">             <UserId>NT AUTHORITY\System</UserId>             <LogonType>S4U</LogonType>             <RunLevel>HighestAvailable</RunLevel>           </Principal>         </Principals>         <Asetukset->           <IdleSettings>             <Kesto>PT10M</Duration>             <WaitTimeout>PT1H</WaitTimeout>             <StopOnIdleEnd>false</StopOnIdleEnd>             <RestartOnIdle>false</RestartOnIdle>           </IdleSettings->           <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>           <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>           <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>           <AllowHardTerminate>tosi</AllowHardTerminate>           <AloitusValintojen>tosi</StartWhenAvailable>           <RunOnlyIfNetworkAvailable>true</RunOnlyIfNetworkAvailable>           <AllowStartOnDemand>tosi</AllowStartOnDemand>           <Käytössä>tosi</Käytössä>           <Piilotettu>epätosi</Hidden>           <RunOnlyIfIdle>false</RunOnlyIfIdle>           <WakeToRun>epätosi</WakeToRun>           <ExecutionTimeLimit>PT1H</ExecutionTimeLimit>           <Prioriteetti>7</Priority>         </Settings>         <käynnistää>           $taskTrigger         </Triggers>         <Toiminnot Context="Tekijä">           <Exec>             <Komento>powershell.exe</Komento>             <argumentit>-NoProfile -ExecutionPolicy Bypass -File "$wrapperPath"</Arguments>           </Exec>         </Actions>       </Task>     </Properties>   </TaskV2> </ScheduledTasks> " @

# Write GPP ScheduledTasks.xml to GPO $gppXmlPath = Join-Path $gpoPrefPath "ScheduledTasks.xml" $gppScheduledTasksXml | Out-File -FilePath $gppXmlPath -Encoding UTF8 -Force Write-Host " [OK] Ajoitettu tehtävä lisätty ryhmäkäytäntöobjektiin" -EtualallaColor Green Write-Host " Tehtävien aikataulu: $Schedule $ScheduleTime $RandomDelayHours tunnin satunnaisviiveellä" -Edustaväri Harmaa

# Step 5: Link GPO to OU(s) Write-Host "'n[5/6] Linking GPO to OU(s)..." -ForegroundColor Yellow

$linkedCount = 0 $skippedCount = 0

foreach ($targetOU in $OUPath) {     $existingLink = Get-GPInheritance -Target $targetOU -Domain $DomainName |          Select-Object -ExpandProperty GpoLinks |          Where-Object { $_. DisplayName -eq $GPOName }

    if (-not $existingLink) {         New-GPLink -Name $GPOName -Target $targetOU -Domain $DomainName -LinkEnabled Yes | Out-Null         Write-Host " [OK] Linkitetty: $targetOU" -EtualallaColor Green         $linkedCount++     } muu {         Write-Host " - Jo linkitetty: $targetOU" -Edustaväri Keltainen         $skippedCount++     } }

Write-Host "`n   Summary: $linkedCount new links, $skippedCount already existed" -ForegroundColor Cyan

# Step 6: Create WMI Filter (optional - for Windows 10/11 only) Write-Host "'n[6/6] Creating WMI filter..." -ForegroundColor Yellow

$wmiFilterName = "Windows 10 and 11 Workstations" $wmiQuery = 'SELECT * FROM Win32_OperatingSystem WHERE Version LIKE "10.%" AND ProductType = "1"'

Write-Host @"    [HUOMAUTUS] VALINNAINEN: WMI-suodattimen luominen GPMC:ssä    Suodattimen nimi: $wmiFilterName    Kysely: $wmiQuery    Tämä suodattaa ryhmäkäytäntöobjektin niin, että se koskee vain Windows 10/11-työasemia.            

"@ -ForegroundColor Yellow

# Summary Write-Host "'n============================================" -Edustavärisyan Write-Host "DEPLOYMENT COMPLETE" -ForegroundColor Green Write-Host "============================================" -EdustaVärisyan Write-Host @"

Summary: - Ryhmäkäytäntöobjektin nimi: $GPOName - Target OU: $OUPath - Kokoelman jakaminen: $CollectionSharePath - Komentosarjan sijainti: $sysvolScriptPath - Aikataulu: $Schedule $ScheduleTime

Next Steps: 1. Jaetun kokoelman luominen oikeilla käyttöoikeuksilla:    - Jaa: $CollectionSharePath    - Käyttöoikeudet: toimialueen tietokoneet (kirjoitus), toimialueen järjestelmänvalvojat (täydet)

2. Complete the scheduled task configuration in GPMC (see instructions above)

3. Run 'gpupdate /force' on a test machine to verify deployment

4. Monitor collection results in: $CollectionSharePath

5. Run aggregation script to generate reports: .\Aggregate-SecureBootData.ps1 -InputPath "$CollectionSharePath"

"@ -ForegroundColor White  

​​​​​​​

Tarvitsetko lisäohjeita?

Haluatko lisää vaihtoehtoja?

Tutustu tilausetuihin, selaa harjoituskursseja, opi suojaamaan laitteesi ja paljon muuta.