{"id":49364,"date":"2025-05-18T17:06:50","date_gmt":"2025-05-18T17:06:50","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=49364"},"modified":"2025-05-18T17:06:50","modified_gmt":"2025-05-18T17:06:50","slug":"rundeck-assignments-2-windows","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/rundeck-assignments-2-windows\/","title":{"rendered":"Rundeck Assignments 2 &#8211; Windows"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Rundeck Student Assignments (Windows Local Node)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcdd Setup Prerequisites:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ensure <code>PowerShell<\/code> is available (default on Windows Server 2019)<\/li>\n\n\n\n<li>The <strong>rundeck server itself is also the execution node<\/strong><\/li>\n\n\n\n<li>Students must <strong>create a project first<\/strong> (e.g., <code>windows-lab<\/code>)<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udf93 Assignment List<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Assignment 1: Hello World in PowerShell<\/strong><\/h3>\n\n\n\n<p><strong>Objective:<\/strong> Run a basic PowerShell script as a Rundeck job.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Job Name:<\/strong> <code>hello-world<\/code><\/li>\n\n\n\n<li><strong>Step Type:<\/strong> Script \u2192 PowerShell<\/li>\n\n\n\n<li><strong>Command:<\/strong> <code>Write-Output \"Hello from Rundeck on Windows Server!\"<\/code><\/li>\n\n\n\n<li><strong>Expected Outcome:<\/strong> Job log displays the message.<\/li>\n\n\n\n<li><strong>Learning Outcome:<\/strong> Understand basic job creation and PowerShell execution.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Assignment 2: List Running Processes<\/strong><\/h3>\n\n\n\n<p><strong>Objective:<\/strong> Use Rundeck to list all currently running processes.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Job Name:<\/strong> <code>list-processes<\/code><\/li>\n\n\n\n<li><strong>Script Step:<\/strong> <code>Get-Process | Sort-Object CPU -Descending | Select-Object -First 10<\/code><\/li>\n\n\n\n<li><strong>Expected Outcome:<\/strong> Displays the top 10 CPU-consuming processes in the job log.<\/li>\n\n\n\n<li><strong>Bonus:<\/strong> Add a second step to export to a file in <code>C:\\rundeck\\logs<\/code>.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Assignment 3: Create a User-Supplied Directory<\/strong><\/h3>\n\n\n\n<p><strong>Objective:<\/strong> Use job options to accept a directory name and create it.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Job Name:<\/strong> <code>create-directory<\/code><\/li>\n\n\n\n<li><strong>Job Option:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Name: <code>foldername<\/code><\/li>\n\n\n\n<li>Description: &#8220;Name of the folder to create in C:\\rundeck&#8221;<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Script Step:<\/strong> <code>New-Item -Path \"C:\\rundeck\\${option.foldername}\" -ItemType Directory<\/code><\/li>\n\n\n\n<li><strong>Expected Outcome:<\/strong> Creates a folder with the given name.<\/li>\n\n\n\n<li><strong>Learning Outcome:<\/strong> Understand job options and user input.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Assignment 4: Disk Space Report<\/strong><\/h3>\n\n\n\n<p><strong>Objective:<\/strong> Generate a disk usage report for drive <code>C:\\<\/code>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Job Name:<\/strong> <code>disk-space-report<\/code><\/li>\n\n\n\n<li><strong>Script Step:<\/strong> <code>Get-PSDrive C | Format-List > C:\\rundeck\\disk_report.txt Get-Content C:\\rundeck\\disk_report.txt<\/code><\/li>\n\n\n\n<li><strong>Expected Outcome:<\/strong> Job log shows disk usage and a file is saved.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Assignment 5: System Health Check Workflow<\/strong><\/h3>\n\n\n\n<p><strong>Objective:<\/strong> Run a multi-step job that checks system health.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Job Name:<\/strong> <code>system-health-check<\/code><\/li>\n\n\n\n<li><strong>Workflow Steps:<\/strong>\n<ol class=\"wp-block-list\">\n<li>Uptime: <code>(Get-CimInstance Win32_OperatingSystem).LastBootUpTime<\/code><\/li>\n\n\n\n<li>CPU Load (5 seconds sample): <code>Get-Counter '\\Processor(_Total)\\% Processor Time' -SampleInterval 5 -MaxSamples 1<\/code><\/li>\n\n\n\n<li>Memory Usage: <code>Get-CimInstance Win32_OperatingSystem | Select-Object FreePhysicalMemory, TotalVisibleMemorySize<\/code><\/li>\n\n\n\n<li>Active Sessions: <code>quser<\/code><\/li>\n<\/ol>\n<\/li>\n\n\n\n<li><strong>Expected Outcome:<\/strong> Combined output of system diagnostics in job logs.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcc1 Optional Directory Structure for Files:<\/h2>\n\n\n\n<p>You may suggest students save outputs to:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">C<\/span>:\\<span class=\"hljs-selector-tag\">rundeck<\/span>\\\n\u251c\u2500\u2500 <span class=\"hljs-selector-tag\">logs<\/span>\\\n\u2502   \u251c\u2500\u2500 <span class=\"hljs-selector-tag\">disk_report<\/span><span class=\"hljs-selector-class\">.txt<\/span>\n\u2502   \u251c\u2500\u2500 <span class=\"hljs-selector-tag\">process_list<\/span><span class=\"hljs-selector-class\">.txt<\/span>\n\u251c\u2500\u2500 <span class=\"hljs-selector-tag\">backups<\/span>\\\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcda Learning Objectives for Students<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Skill<\/th><th>Learned Through<\/th><\/tr><\/thead><tbody><tr><td>Job creation<\/td><td>Hello World<\/td><\/tr><tr><td>PowerShell scripting<\/td><td>All jobs<\/td><\/tr><tr><td>Job options<\/td><td>Assignment 3<\/td><\/tr><tr><td>Logging\/output<\/td><td>Assignment 2 &amp; 4<\/td><\/tr><tr><td>Workflows<\/td><td>Assignment 5<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Rundeck Student Assignments (Windows Local Node) \ud83d\udcdd Setup Prerequisites: \ud83c\udf93 Assignment List Assignment 1: Hello World in PowerShell Objective: Run a basic PowerShell script as a Rundeck job. Assignment 2:&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-49364","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49364","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=49364"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49364\/revisions"}],"predecessor-version":[{"id":49365,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49364\/revisions\/49365"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=49364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=49364"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=49364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}