Register-ScheduledJob

Ütemezett feladatot hoz létre.

Syntax

Register-ScheduledJob
        [-ScriptBlock] <ScriptBlock>
        [-Name] <String>
        [-Trigger <ScheduledJobTrigger[]>]
        [-InitializationScript <ScriptBlock>]
        [-RunAs32]
        [-Credential <PSCredential>]
        [-Authentication <AuthenticationMechanism>]
        [-ScheduledJobOption <ScheduledJobOptions>]
        [-ArgumentList <Object[]>]
        [-MaxResultCount <Int32>]
        [-RunNow]
        [-RunEvery <TimeSpan>]
        [-WhatIf]
        [-Confirm]
        [<CommonParameters>]
Register-ScheduledJob
        [-FilePath] <String>
        [-Name] <String>
        [-Trigger <ScheduledJobTrigger[]>]
        [-InitializationScript <ScriptBlock>]
        [-RunAs32]
        [-Credential <PSCredential>]
        [-Authentication <AuthenticationMechanism>]
        [-ScheduledJobOption <ScheduledJobOptions>]
        [-ArgumentList <Object[]>]
        [-MaxResultCount <Int32>]
        [-RunNow]
        [-RunEvery <TimeSpan>]
        [-WhatIf]
        [-Confirm]
        [<CommonParameters>]

Description

A Register-ScheduledJob parancsmag ütemezett feladatokat hoz létre a helyi számítógépen.

Az ütemezett feladatok olyan Windows PowerShell-háttérfeladatok, amelyek automatikusan, egyszeri vagy ismétlődő ütemezéssel indíthatók el. Az ütemezett feladatok lemezen vannak tárolva, és a Feladatütemezőben vannak regisztrálva. A feladatok kezelhetők a Feladatütemezőben vagy a Windows PowerShell ütemezett feladat parancsmagjaival.

Amikor egy ütemezett feladat elindul, létrehozza az ütemezett feladat egy példányát. Az ütemezett feladatpéldányok megegyeznek a Windows PowerShell háttérfeladataival, azzal a kivételrel, hogy az eredmények lemezre vannak mentve. Használja a Feladat parancsmagokat, például Start-Joba , Get-Job, és Receive-Job a feladatpéldányok eredményeinek elindítását, megtekintését és lekérését.

Új ütemezett feladat létrehozásához használható Register-ScheduledJob . Az ütemezett feladat által futtatott parancsok megadásához használja a ScriptBlock paramétert . A feladat által futtatott szkript megadásához használja a FilePath paramétert .

A Windows PowerShell-ütemezett feladatok ugyanazokat a feladat-eseményindítókat és feladatbeállításokat használják, amelyeket a Feladatütemező az ütemezett tevékenységekhez használ.

Az eseményindító paraméter Register-ScheduledJob egy vagy több feladatindítót ad hozzá, amelyek elindítják a feladatot. Az eseményindító paraméter nem kötelező, így az ütemezett feladat létrehozásakor, a feladat eseményindítóinak későbbi hozzáadásakor, a RunNow paraméter hozzáadásával azonnal elindíthatja a feladatot, a parancsmaggal Start-Job bármikor azonnal elindíthatja a feladatot, vagy más feladatok sablonjaként mentheti a nem feldolgozott ütemezett feladatot.

A Beállítások paraméter lehetővé teszi az ütemezett feladat beállítási beállításainak testreszabását. A Beállítások paraméter nem kötelező, így bármikor beállíthatja a feladatbeállításokat az ütemezett feladat létrehozásakor vagy módosításakor. Mivel a feladatbeállítások megakadályozhatják az ütemezett feladat futtatását, tekintse át a feladat beállításait, és állítsa be őket gondosan.

Register-ScheduledJoba Windows PowerShellben található PSScheduledJob modul feladatütemezési parancsmagjainak egyik gyűjteménye.

Az ütemezett feladatokról további információt a PSScheduledJob modul cikkekben talál. Importálja a PSScheduledJob modult, majd írja be a következőt: Get-Help about_Scheduled* vagy tekintse meg a about_Scheduled_Jobs.

Ezt a parancsmagot a Windows PowerShell 3.0-ban vezettük be.

Példák

1. példa: Ütemezett feladat létrehozása

Ez a példa létrehoz egy ütemezett feladatot a helyi számítógépen.

Register-ScheduledJob -Name "Archive-Scripts" -ScriptBlock {
  Get-ChildItem $HOME\*.ps1 -Recurse |
    Copy-Item -Destination "\\Server\Share\PSScriptArchive"
}

Register-ScheduledJobA Név paraméter használatával hozza létre az Archive-Scripts ütemezett feladatot. A ScriptBlock paraméter fut Get-ChildItem , amely rekurzív módon keres a $HOME könyvtárban fájlokban .ps1 . A Copy-Item parancsmag a fájlokat a Cél paraméter által megadott könyvtárba másolja.

Mivel az ütemezett feladat nem tartalmaz eseményindítót, nem indul el automatikusan. Feladat-eseményindítókat Add-JobTriggeradhat hozzá, a Start-Job parancsmaggal igény szerint indíthatja el a feladatot, vagy használhatja az ütemezett feladatot sablonként más ütemezett feladatokhoz.

2. példa: Ütemezett feladat létrehozása eseményindítókkal és egyéni beállításokkal

Ez a példa bemutatja, hogyan hozhat létre olyan ütemezett feladatot, amely rendelkezik feladat-eseményindítóval és egyéni feladatbeállításokkal.

$O = New-ScheduledJobOption -WakeToRun -StartIfIdle -MultipleInstancePolicy Queue
$T = New-JobTrigger -Weekly -At "9:00 PM" -DaysOfWeek Monday -WeeksInterval 2
$path = "\\Srv01\Scripts\UpdateVersion.ps1"
Register-ScheduledJob -Name "UpdateVersion" -FilePath $path -ScheduledJobOption $O -Trigger $T

A $O változó tárolja a parancsmag által létrehozott feladatbeállítás-objektumot New-ScheduledJobOption . A beállítások akkor is elindítják az ütemezett feladatot, ha a számítógép nem tétlen, szükség esetén felébreszti a számítógépet a feladat futtatására, és lehetővé teszi a feladat több példányának futtatását egy sorozatban.

A $T változó tárolja a parancsmag eredményét a New-JobTrigger feladatindító létrehozásához, amely minden második hétfőn 21:00-kor elindít egy feladatot.

A $path változó tárolja a szkriptfájl elérési útját UpdateVersion.ps1 .

Register-ScheduledJobA Név paraméter használatával hozza létre az UpdateVersion ütemezett feladatát. A FilePath paraméter a feladat futtatásához használt szkript megadására használja $path . Az ScheduledJobOption paraméter a benne tárolt $Ofeladatbeállításokat használja. Az Eseményindító paraméter a következő helyen $Ttárolt feladat-eseményindítókat használja: .

3. példa: Az eseményindító és az ütemezett feladat beállításainak megadása kivonattáblák használatával

Ez a példa ugyanazzal a hatással rendelkezik, mint a 2. példa parancsa. Létrehoz egy ütemezett feladatot kivonattáblákkal a Trigger és az ScheduledJobOption paraméterek értékeinek megadásához. A $O 2. példában definiált és $Tváltozók helyébe kivonattáblák lépnek.

$T = @{
  Frequency="Weekly"
  At="9:00PM"
  DaysOfWeek="Monday"
  Interval=2
}
$O = @{
  WakeToRun=$true
  StartIfNotIdle=$false
  MultipleInstancePolicy="Queue"
}
Register-ScheduledJob -Trigger $T -ScheduledJobOption $O -Name UpdateVersion -FilePath "\\Srv01\Scripts\Update-Version.ps1"

4. példa: Ütemezett feladatok létrehozása távoli számítógépeken

Ebben a példában az EnergyData ütemezett feladat több távoli számítógépen jön létre. Az ütemezett feladat futtat egy szkriptet, amely nyers adatokat gyűjt, és menti azokat egy futó naplóba a távoli számítógépen.

$Cred = Get-Credential
$O = New-ScheduledJobOption -WakeToRun -StartIfIdle -MultipleInstancePolicy Queue
$T = New-JobTrigger -Weekly -At "9:00 PM" -DaysOfWeek Monday -WeeksInterval 2
Invoke-Command -ComputerName (Get-Content Servers.txt) -Credential $Cred -ScriptBlock {
  $params = @{
      Name = "Get-EnergyData"
      FilePath = "\\Srv01\Scripts\Get-EnergyData.ps1"
      ScheduledJobOption = $using:O
      Trigger = $using:T
  }
  Register-ScheduledJob @params
}

A $Cred változó egy PSCredential objektumban tárolja a hitelesítő adatokat egy olyan felhasználó számára, aki jogosult ütemezett feladatok létrehozására. A $O változó a következővel New-ScheduledJobOptionlétrehozott feladatbeállításokat tárolja: . A $T változó a következővel New-JobTriggerlétrehozott feladat-eseményindítókat tárolja: .

A Invoke-Command parancsmag a ComputerName paraméterrel lekéri a kiszolgálónevek listáját a Servers.txt fájlból. A Hitelesítő paraméter lekéri a hitelesítő objektumot a következő helyen $Cred: . A ScriptBlock paraméter futtat egy Register-ScheduledJob parancsot a Servers.txt fájlban lévő számítógépeken.

A paramétereket a Register-ScheduledJob következő határozza $paramsmeg: . A Név paraméterek azt határozzák meg, hogy a feladat neve minden távoli számítógépen el legyen nevezve Get-EnergyData . A FilePath megadja a szkript helyét EnergyData.ps1 . A szkript egy fájlkiszolgálón található, amely minden résztvevő számítógép számára elérhető. A feladat a feladat eseményindítói $T által megadott ütemezésen és a feladatbeállításokon fut.$O

A Register-ScheduledJob @params parancs létrehozza az ütemezett feladatot a szkriptblokk paramétereivel.

5. példa: Olyan ütemezett feladat létrehozása, amely parancsfájlt futtat távoli számítógépeken

Ez a példa létrehozza a CollectEnergyData ütemezett feladatot a helyi számítógépen. A feladat több távoli számítógépen fut.

$Admin = Get-Credential
$T = New-JobTrigger -Weekly -At "9:00 PM" -DaysOfWeek Monday -WeeksInterval 2
Register-ScheduledJob -Name "CollectEnergyData" -Trigger $T -MaxResultCount 99 -ScriptBlock {
  $params = @{
    AsJob = $true
    ComputerName = (Get-Content Servers.txt)
    FilePath = '\\Srv01\Scripts\Get-EnergyData.ps1'
    Credential = $using:Admin
    Authentication = 'CredSSP'
  }
  Invoke-Command @params
}

A $Admin változó egy PSCredential objektum parancsainak futtatására jogosult felhasználó hitelesítő adatait tárolja. A $T változó a következővel New-JobTriggerlétrehozott feladat-eseményindítókat tárolja: .

A Register-ScheduledJob parancsmag a Name paraméter használatával hozza létre a CollectEnergyData ütemezett feladatot a helyi számítógépen. Az eseményindító paraméter megadja a feladat-eseményindítókat, $T a MaxResultCount paraméter pedig 99-re növeli a mentett eredmények számát.

A ScriptBlock paraméter a következővel határozza meg a Invoke-Command paramétereket $params: . Az AsJob paraméter létrehozza a háttérfeladat-objektumot a helyi számítógépen, annak ellenére, hogy a Energydata.ps1 szkript a távoli számítógépeken fut. A ComputerName paraméter lekéri a kiszolgálónevek listáját a Servers.txt fájlból. A hitelesítőadat-paraméter egy olyan felhasználói fiókot határoz meg, amely rendelkezik szkriptek távoli számítógépeken való futtatására vonatkozó engedéllyel. A hitelesítési paraméter pedig a CredSSP értékét adja meg a delegált hitelesítő adatok engedélyezéséhez.

A Invoke-Command @params parancs futtatása a szkriptblokk paramétereivel.

Paraméterek

-ArgumentList

A FilePath paraméter vagy a ScriptBlock paraméter által megadott parancs paramétereinek értékeit adja meg.

Type:Object[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Authentication

Megadja a felhasználó hitelesítő adatainak hitelesítéséhez használt mechanizmust. Az alapértelmezett érték az Alapértelmezett érték.

A paraméter elfogadható értékei a következők:

  • Default
  • Basic
  • Credssp
  • Digest
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential

A paraméter értékeivel kapcsolatos további információkért lásd : AuthenticationMechanism.

Figyelemfelhívás

A hitelesítő adatok biztonsági szolgáltatójának (CredSSP) hitelesítése, amelyben a felhasználó hitelesítő adatai egy hitelesítendő távoli számítógépre kerülnek, olyan parancsokhoz készült, amelyek több erőforráson is hitelesítést igényelnek, például távoli hálózati megosztáshoz való hozzáféréshez. Ez a mechanizmus növeli a távoli művelet biztonsági kockázatát. Ha a távoli számítógép biztonsága sérül, a neki átadott hitelesítő adatokkal szabályozható a hálózati munkamenet.

Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Jóváhagyást kér a parancsmag futtatása előtt.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Olyan felhasználói fiókot ad meg, amely jogosult az ütemezett feladat futtatására. Alapértelmezés szerint az aktuális felhasználó.

Írjon be egy felhasználónevet (például User01 vagy Domain01\User01), vagy írjon be egy PSCredential objektumot, például egyet a Get-Credential parancsmagból. Ha csak felhasználónevet ad meg, a rendszer jelszót kér.

A hitelesítő adatokat PSCredential objektum tárolja, a jelszót pedig SecureStringként tárolja a rendszer.

Feljegyzés

További információ a SecureString adatvédelemről: Mennyire biztonságos a SecureString?.

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

Az ütemezett feladat által futtatott szkriptet adja meg. Adja meg a helyi számítógépen található fájl elérési útját .ps1 . A szkriptparaméterek alapértelmezett értékeinek megadásához használja az Argumentumlista paramétert. Minden Register-ScheduledJob parancsnak a ScriptBlock vagy a FilePath paramétert kell használnia.

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-InitializationScript

Egy Windows PowerShell-szkript (.ps1) teljes elérési útját adja meg. Az inicializálási szkript a háttérfeladathoz létrehozott munkamenetben fut a ScriptBlock paraméter vagy a FilePath paraméter által megadott szkript előtt. Az inicializálási szkripttel konfigurálhatja a munkamenetet, például fájlokat, függvényeket vagy aliasokat adhat hozzá, könyvtárakat hozhat létre, vagy ellenőrizheti az előfeltételeket.

Az elsődleges feladatparancsokat futtató szkript megadásához használja a FilePath paramétert .

Ha az inicializálási szkript hibát okoz, akár nem végződő hibát is, az ütemezett feladat aktuális példánya nem fut, és állapota sikertelen.

Type:ScriptBlock
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxResultCount

Megadja, hogy az ütemezett feladathoz hány feladateredmény-bejegyzés van fenntartva. Az alapértelmezett érték 32.

A Windows PowerShell menti az ütemezett feladat minden aktivált példányának végrehajtási előzményeit és eredményeit a lemezen. Ennek a paraméternek az értéke határozza meg az ütemezett feladathoz mentett feladatpéldányok számát. Ha a feladatpéldányok eredményeinek száma meghaladja ezt az értéket, a Windows PowerShell törli a legrégebbi feladatpéldány eredményeit, hogy helyet biztosítsunk a legújabb feladatpéldány eredményeinek.

A feladat végrehajtási előzményei és a feladatok eredményei a következő helyen vannak mentve: $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\<JobName>\Output\<Timestamp> könyvtárak azon a számítógépen, amelyen a feladat létrejön. A végrehajtási előzmények megtekintéséhez használja a Get-Job parancsmagot. A feladat eredményeinek lekéréséhez használja a Receive-Job parancsmagot.

A MaxResultCount paraméter az ütemezett feladat ExecutionHistoryLength tulajdonságának értékét állítja be.

Az aktuális végrehajtási előzmények és feladatok eredményeinek törléséhez használja a parancsmag ClearExecutionHistory paraméterét Set-ScheduledJob .

Type:Int32
Position:Named
Default value:32
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Megadja az ütemezett feladat nevét. A név az ütemezett feladat összes megkezdett példányához is használatos. A névnek egyedinek kell lennie a számítógépen. Ez a paraméter kötelező.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-RunAs32

Az ütemezett feladatot egy 32 bites folyamatban futtatja.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunEvery

A feladat futtatásának gyakoriságát határozza meg. Ezzel a beállítással például 15 percenként futtathat egy feladatot.

Type:TimeSpan
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunNow

A parancsmag futtatása után Register-ScheduledJob azonnal elindít egy feladatot. Ez a paraméter szükségtelenné teszi a Feladatütemező aktiválását a Windows PowerShell-szkriptek azonnali futtatásához a regisztráció után, és nem követeli meg a felhasználóktól, hogy létrehozzák a kezdő dátumot és időpontot meghatározó eseményindítót.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ScheduledJobOption

Beállítja az ütemezett feladat beállításait. Adjon meg egy ScheduledJobOptions objektumot, például a parancsmaggal New-ScheduledJobOption létrehozott objektumot vagy egy kivonattábla-értéket.

Az ütemezett feladatok beállításait az ütemezési feladat regisztrálásakor vagy a Set-ScheduledJobOption parancsmagok használatával Set-ScheduledJob módosíthatja.

Számos beállítás és alapértelmezett érték határozza meg, hogy egy ütemezett feladat fut-e és mikor. A feladatok ütemezése előtt mindenképpen tekintse át ezeket a beállításokat. Az ütemezett feladatok beállításainak leírását, beleértve az alapértelmezett értékeket is, lásd: New-ScheduledJobOption.

Kivonattábla elküldéséhez használja az alábbi kulcsokat. Az alábbi kivonattáblában a kulcsok az alapértelmezett értékekkel jelennek meg.

@{StartIfOnBattery=$False; StopIfGoingOnBattery=$True; WakeToRun=$False; StartIfNotIdle=$False; IdleDuration="00:10:00"; IdleTimeout="01:00:00"; StopIfGoingOffIdle=$True; RestartOnIdleResume=$False; ShowInTaskScheduler=$True; RunElevated=$False; RunWithoutNetwork=$False; DoNotAllowDemandStart=$False; MultipleInstancePolicy="IgnoreNew"}

Type:Microsoft.PowerShell.ScheduledJob.ScheduledJobOptions
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ScriptBlock

Megadja az ütemezett feladat által futtatott parancsokat. A parancsokat kapcsos zárójelekbe ({}) ágyazva hozzon létre egy szkriptblokkot. A parancsparaméterek alapértelmezett értékeinek megadásához használja az ArgumentList paramétert .

Minden Register-ScheduledJob parancsnak a ScriptBlock vagy a FilePath paramétert kell használnia.

Type:ScriptBlock
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Trigger

Megadja az ütemezett feladat eseményindítóit. Adjon meg egy vagy több ScheduledJobTrigger objektumot, például a parancsmag által visszaadott objektumokat New-JobTrigger , vagy a feladat triggerkulcsainak és értékeinek kivonattábláját.

Egy feladat-eseményindító elindítja az ütemezési feladatot. Az eseményindító megadhat egy egyszeri vagy ismétlődő ütemezett vagy eseményt, például amikor egy felhasználó bejelentkezik vagy a Windows elindul.

Az eseményindító paraméter megadása nem kötelező. Az ütemezett feladat létrehozásakor, a Add-JobTrigger, vagy Set-JobTriggerSet-ScheduledJob parancsmagok használatával később hozzáadhat vagy módosíthat feladat-eseményindítókat, vagy a Start-Job parancsmaggal azonnal elindíthatja az ütemezett feladatot. Az ütemezett feladatokat sablonként használt eseményindító nélkül is létrehozhatja és karbantarthatja.

Kivonattábla elküldéséhez használja a következő kulcsokat:

  • Gyakoriság: Napi, Heti, AtStartup, AtLogon
  • At: Bármely érvényes idő sztring
  • DaysOfWeek – A napnevek tetszőleges kombinációja
  • Intervallum – Bármely érvényes gyakorisági intervallum
  • RandomDelay: Bármely érvényes időbélyeg-sztring
  • Felhasználó: Bármely érvényes felhasználó. Csak az AtLogon gyakorisági értékével használható

Példa:

@{Frequency="Once"; At="3am"; DaysOfWeek="Monday", "Wednesday"; Interval=2; RandomDelay="30minutes"; User="Domain1\User01"}

Type:Microsoft.PowerShell.ScheduledJob.ScheduledJobTrigger[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Bemutatja, mi történne a parancsmag futtatásakor. A parancsmag nem fut.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Bevitelek

None

Ehhez a parancsmaghoz nem lehet objektumokat csövezni.

Kimenetek

Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition

Ez a parancsmag egy ScheduledJobDefinition objektumot ad vissza, amely a regisztrált feladatot jelöli.

Jegyzetek

A rendszer minden ütemezett feladatot a helyi számítógépen lévő könyvtár alkönyvtárába $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs ment. Az alkönyvtár neve az ütemezett feladat, és tartalmaz egy XML-fájlt az ütemezett feladathoz és a végrehajtási előzmények rekordjaihoz. A lemez ütemezett feladataival kapcsolatos további információkért lásd: about_Scheduled_Jobs_Advanced.

A Windows PowerShellben létrehozott ütemezett feladatok a Feladatütemező mappában jelennek meg a Feladatütemezőben Library\Microsoft\Windows\PowerShell\ScheduledJobs . A Feladatütemező használatával megtekintheti és szerkesztheti az ütemezett feladatot.

A Feladatütemező, a schtasks.exe parancssori eszköz és a Feladatütemező parancsmagok használatával kezelheti az Ütemezett feladat parancsmagokkal létrehozott ütemezett feladatokat. Az Ütemezett feladat parancsmagok azonban nem használhatók a Feladatütemezőben létrehozott feladatok kezelésére.

Ha egy ütemezett feladatparancs meghiúsul, a Windows PowerShell hibaüzenetet ad vissza. Ha azonban a feladat meghiúsul, amikor a Feladatütemező megpróbálja futtatni, a hiba nem érhető el a Windows PowerShell számára.

Ha egy ütemezett feladat nem fut, az alábbi módszerekkel keresse meg az okot:

  • Ellenőrizze, hogy a feladat-eseményindító megfelelően van-e beállítva.
    • Ellenőrizze, hogy a feladatbeállításokban megadott feltételek teljesülnek-e.
  • Ellenőrizze, hogy a feladat futtatásához tartozó felhasználói fiók rendelkezik-e engedéllyel a feladat parancsainak vagy szkriptjeinek futtatásához.
  • Ellenőrizze a Feladatütemező előzményeit a hibákért.
  • Ellenőrizze a Feladatütemező eseménynaplójában a hibákat.

További információ: about_Scheduled_Jobs_Troubleshooting.