Geek School: Научете как да използвате работни места в PowerShell

Съдържание:

Geek School: Научете как да използвате работни места в PowerShell
Geek School: Научете как да използвате работни места в PowerShell

Видео: Geek School: Научете как да използвате работни места в PowerShell

Видео: Geek School: Научете как да използвате работни места в PowerShell
Видео: 12V 1000W | DC Voltage Step Up Converter ( 12v to 43v ) for DC Motor DIY - YouTube 2024, Може
Anonim
PowerShell има четири вида задания - фонови работни места, отдалечени работни места, работни места с WMI и планирани работни места. Присъединете се към нас, когато разберем какви са и как можем да ги използваме.
PowerShell има четири вида задания - фонови работни места, отдалечени работни места, работни места с WMI и планирани работни места. Присъединете се към нас, когато разберем какви са и как можем да ги използваме.

Не забравяйте да прочетете предишните статии в серията:

  • Научете как да автоматизирате Windows с PowerShell
  • Научете как да използвате Cmdlets в PowerShell
  • Учене как да използвате обекти в PowerShell
  • Форматиране на обучение, филтриране и сравнение в PowerShell
  • Научете как да използвате Remoting в PowerShell
  • Използване на PowerShell за получаване на компютърна информация
  • Работа с колекции в PowerShell

И останете настроени за останалата част от серията през цялата седмица.

Работни места на фона

Досега всичко, което ви показах в PowerShell, е синхронно, което означава, че въвеждаме нещо в черупката и не можем да направим много, докато тази команда не приключи. Това е мястото, където се зареждат фонови задачи. За да стартирате фон, задачата просто предава скрипт блок на cmdlet за стартиране на задание.

Start-Job –Name GetFileList –Scriptblock {Get-ChildItem C: –Recurse}

Сега ние сме свободни да правим всичко, което искаме, в рамките на черупката, докато този скрипт блок се изпълнява във фонов режим.
Сега ние сме свободни да правим всичко, което искаме, в рамките на черупката, докато този скрипт блок се изпълнява във фонов режим.
Когато започнете нова работа, PowerShell създава нов обект на работа, който представлява тази задача. Можете да получите списък на всички задания по всяко време, като стартирате командата Get-Job.
Когато започнете нова работа, PowerShell създава нов обект на работа, който представлява тази задача. Можете да получите списък на всички задания по всяко време, като стартирате командата Get-Job.
Предметът на работа ви разказва за състоянието на заданията. Например, в горната екранна снимка можем да видим, че имаме BackgroundJob, наречен GetFileList, който все още работи, но вече е започнал да връща данни. Ако в даден момент решиш, че задачата работи твърде дълго, лесно можеш да я спреш, като я включиш в Stop-Job.
Предметът на работа ви разказва за състоянието на заданията. Например, в горната екранна снимка можем да видим, че имаме BackgroundJob, наречен GetFileList, който все още работи, но вече е започнал да връща данни. Ако в даден момент решиш, че задачата работи твърде дълго, лесно можеш да я спреш, като я включиш в Stop-Job.

Get-Job –Name GetFileList | Stop-Job

Въпреки това, след като сте спрели дадена работа, каквито данни са получили до момента, в който сте я спрели, все още е налице. Все пак има мощност. В PowerShell, след като получите резултатите за дадена задача, те се изтриват. За да останат, трябва да зададете параметъра за запазване на превключвателя за получаване на заданието за получаване.
Въпреки това, след като сте спрели дадена работа, каквито данни са получили до момента, в който сте я спрели, все още е налице. Все пак има мощност. В PowerShell, след като получите резултатите за дадена задача, те се изтриват. За да останат, трябва да зададете параметъра за запазване на превключвателя за получаване на заданието за получаване.

Get-Job –Name GetFileList | Receive-Job –Keep

Image
Image

След като завършите работа, най-добрата практика е да я премахнете. За да премахнете заданието, просто го отправете към командата Премахване на задание.

Get-Job –Name GetFileList | Remove-Job

Това ще го премахне от списъка с задания, които се връщат от Get-Job.

Image
Image

Отдалечени работни места

Преди няколко урока разгледахме как можем да използваме remoting, за да изпълним командите на PowerShell на отдалечена машина, като използваме Invoke Command, но знаехте ли, че можете да използвате Invoke Command, за да започнете работа във фонов режим? За целта просто добавете параметъра -AsJob в края на вашата команда:

Invoke-Command -ComputerName Flash,Viper -Credential administrator -ScriptBlock {gci} –AsJob

Това беше проста команда и трябваше да приключи изпълнението досега, така че нека да разгледаме нашия статут на работа.
Това беше проста команда и трябваше да приключи изпълнението досега, така че нека да разгледаме нашия статут на работа.
Хм, изглежда, че не успя. Това ме накара да се захвана с първите ми неща. Когато създавате нова задача от всякакъв вид в PowerShell, тя създава една родителска задача в допълнение към едно детайлно задание за всеки компютър, на който работите. Когато използвате командата Get-Job, тя ви показва само родителските задания, а състоянието на държавата е най-лошият сценарий, което означава, че дори ако командата не се изпълни само на един от сто компюта, се провали. За да видите списък с детски задачи, трябва да използвате параметъра IncludeChildJob.
Хм, изглежда, че не успя. Това ме накара да се захвана с първите ми неща. Когато създавате нова задача от всякакъв вид в PowerShell, тя създава една родителска задача в допълнение към едно детайлно задание за всеки компютър, на който работите. Когато използвате командата Get-Job, тя ви показва само родителските задания, а състоянието на държавата е най-лошият сценарий, което означава, че дори ако командата не се изпълни само на един от сто компюта, се провали. За да видите списък с детски задачи, трябва да използвате параметъра IncludeChildJob.
Ако погледнете по-близо, ще видите, че работата наистина не е успешна само на един компютър, което ни води към следващия gotcha. Когато опитате да получите резултатите за заданието, ако зададете името или идентификационния номер на родителя, PowerShell ще върне данните от всички задания на дете. Проблемът е, че ако е имало грешка в една от детските работни места, ще останем с някакъв червен текст.
Ако погледнете по-близо, ще видите, че работата наистина не е успешна само на един компютър, което ни води към следващия gotcha. Когато опитате да получите резултатите за заданието, ако зададете името или идентификационния номер на родителя, PowerShell ще върне данните от всички задания на дете. Проблемът е, че ако е имало грешка в една от детските работни места, ще останем с някакъв червен текст.
Има два начина да се справите с това. На първо място, ако знаете за кои компютри искате резултатите, просто можете да използвате параметъра ComputerName на командата Ressie-Job cmdlet.
Има два начина да се справите с това. На първо място, ако знаете за кои компютри искате резултатите, просто можете да използвате параметъра ComputerName на командата Ressie-Job cmdlet.

Get-Job –Id 3 | Receive-Job –Keep –ComputerName Viper

Image
Image

Като алтернатива, можете да получите резултатите от конкретна задача за деца, като използвате нейния идентификационен номер за работа.

Get-Job -Id 3 –IncludeChildJob

Image
Image

Get-Job -Id 5 | Receive-Job –Keep

Image
Image

WMI Jobs

Работните задачи на WMI са почти същите като отдалечени задания, изискващи само параметъра -AsJob да бъде добавен към cmdlet на Get-WmiObject.

Image
Image
За съжаление, това означава, че те също са обект на същите забележки, споменати в секцията "Дистанционни работни места".
За съжаление, това означава, че те също са обект на същите забележки, споменати в секцията "Дистанционни работни места".

Планирани работни места

Последните три вида работни места, които разгледахме, не бяха устойчиви, което означава, че те са налице само в текущата ви сесия. По принцип това означава, че ако започнете работа и след това отворите друга конзола PowerShell и стартирайте Get-Job, няма да видите никакви работни места. Въпреки това, върнете се на конзолата, от която сте изстреляли задачата, ще можете да видите състоянието му. Това е в противоречие с планираните работни места, които са устойчиви, По принцип Scheduled Job е скрипт блок, който работи по график. В миналото същия ефект би могъл да се постигне с помощта на Windows Task Scheduler, което всъщност се случва под капака. За да създадете нова насрочена задача, ние правим следното:

Register-ScheduledJob -Name GetEventLogs -ScriptBlock {Get-EventLog -LogName Security -Newest 100} -Trigger (New-JobTrigger -Daily -At 5pm) -ScheduledJobOption (New-ScheduledJobOption -RunElevated)

В това командване има доста неща, така че нека да го счупим.

  • Първо, даваме на нашата Scheduled Job име на GetEventLogs.
  • След това го казваме, че когато се задейства, искаме да стартира съдържанието на посочения скрипт блок, който основно получава най-новите 100 записа в регистъра на събитията за сигурност.
  • След това определяме тригера. Тъй като параметърът за задействане отнема тригерен обект като вход, ние използвахме парахечната команда за генериране на тригер, който ще изгасне всеки ден в 5PM.
  • Тъй като се занимаваме с регистрационния файл на събитията, трябва да стартираме като администратор, който можем да определим, като създадем нов обект ScheduledJobOption и го предадем на параметъра ScheduledJobOption.
Тъй като това е малко по-различен тип работа, ще трябва да използвате друга команда, за да изтеглите списък с всички зададени задания на машината.
Тъй като това е малко по-различен тип работа, ще трябва да използвате друга команда, за да изтеглите списък с всички зададени задания на машината.

Get-ScheduledJob

Препоръчано: