Delivering complex script projects

Slides:



Advertisements
Similar presentations
AD User Import From SIMS.NET
Advertisements

1 Chapter Overview Creating User and Computer Objects Maintaining User Accounts Creating User Profiles.
© 2012 IBM Corporation Tivoli Workload Automation Informatica Power Center.
Test-Driven Development With Visual Studio 2005 Erno de Weerd Info Support.
Microsoft Windows 2003 Server. Client/Server Environment Many client computers connect to a server.
Network Analysis with Python
LiveCycle Data Services Introduction Part 2. Part 2? This is the second in our series on LiveCycle Data Services. If you missed our first presentation,
Installing SIGNZ on a stand- alone machine. These slides will guide you through the installation of the SIGNZ ‘server’ and ‘client’ components on one machine.
OCC Network Drives  H:\  P:\ 
Forms and Server Side Includes. What are Forms? Forms are used to get user input We’ve all used them before. For example, ever had to sign up for courses.
Managing SX.e and TWL with MARC and Scripts Jeremiah Curtis
Extending SQL Server Integration Services Bret Stateham Training Manager Vortex Learning Solutions blogs.netconnex.com.
Online Conference June 17 th and 18 th SharePoint Online Administration with PowerShell.
Semi-Automatic patch upgrade kit
© 2006 Cisco Systems, Inc. All rights reserved.1.
Implementing and Using the SIRWEB Interface Setup of the CGI script and web procfile Connecting to your database using HTML Retrieving data using the CGI.
T Iteration demo T Iteration Demo Neula PP Iteration
INFO 637Lecture #71 Software Engineering Process II Product Implementation INFO 637 Glenn Booker.
1 MSTE Visual SourceSafe For more information, see:
GOSS iCM Forms Gary Ratcliffe. 2 Agenda Webinar Programme Form Groups Publish Multiple Visual Script Editor Scripted Actions Form Examples.
Michel Grootjans Pascal Mestdach.  Michel Grootjans ◦ Enterprise Architect ◦
T Project Review ITSUPS Implementation
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Review Please turn in your homework and practicals Packages, installation, rpm command Apache – Quick and easy way to set up a web server to play around.
Advanced Task Engine Doing Cool Stuff with Cool stuff!
1 CSC160 Chapter 1: Introduction to JavaScript Chapter 2: Placing JavaScript in an HTML File.
SQL Server Reporting Services for.NET Developers Bret Stateham
T Project Review Sotanorsu I2 Iteration
Custom Authentication Providers For DotNetNuke v5.0 Stan Schultes – Sarasota, FL Florida Community Leader
Introduction to SQL Server Automation with Powershell by Chris Sommer.
Agenda Customizing a Unix/Linux account Environment Introduction to Start-up Files (.bash_profile,.bashrc,.profile,.kshrc) Safe Methods for Changing Start-up.
T Iteration Demo LicenseChecker I2 Iteration
1 Project 12: Cars from File. This is an extension of Project 11, Car Class You may use the posted solution for Project 11 as a starting point for this.
Advanced Higher Computing Science
Start-SPPowerShell – Introduction to PowerShell for SharePoint Admins and Developers Paul BAker.
Phase II, The Pilot Area Kick-off
Lesson 06: Functions Class Participation: Class Chat:
T Project Review X-tremeIT I1 Iteration
Development Environment
Exam #1 You will have exactly 30 Mins to complete the exam.
Scrum and TargetProcess
Matlab Training Session 4: Control, Flow and Functions
C++ coding standard suggestion… Separate reasoning from action, in every block. Hi, this talk is to suggest a rule (or guideline) to simplify C++ code.
HSA Reusability Issues
Writing JavaScript Code
Functions CIS 40 – Introduction to Programming in Python
Course Name: QTP Trainer: Laxmi Duration: 25 Hrs Session: Daily 1 Hr.
SharePoint Saturday Omaha April 2016
James Blankenship March , 2018
Making PowerShell Useful
Cisco Unity Connection Customized Log-on Message
SIRS and STARS: Now What?
Exploring the Power of EPDM Tasks - Working with and Developing Tasks in EPDM By: Marc Young XLM Solutions
Coding Concepts (Basics)
Lesson 06: Functions Class Chat: Attendance: Participation
PowerShell & PowerBi Reducing DBAs Context Switching
Making PowerShell Useful
Data Migration Assessment Jump Start – Engagement Kickoff
Module P3 Practical: Building a webapp in nodejs and
Lesson 1 Understanding Software Quality Assurance
LESSON 01 Hands-on Training Execution
Dr. Rob Hasker SE 3800 Note 9 Reviews.
Technical Integration Guide
Order of Operations.
Macrosystems EDDIE: Getting Started + Troubleshooting Tips
Preparing for a move to the Cloud
PnP Partner Pack - Introduction
Power up your PowerApps!
Automation in a hybrid world
Canvas introduction for students
Presentation transcript:

Delivering complex script projects A practical approach Øyvind Kallstad

Agenda Introduction Planning Development and testing Documentation Delivery Lessons learned Questions / Discussion

Introduction

Introduction Case study: Move a large number of home shares from old to new SAN infrastructure. Conversion of old vbscript.

Planning The more time spent on planing, the more time you can work uninterrupted doing development. Try to anticipate any scenario. Understand the requirements of the customer, and the need that they need fulfilled.

Planning External planning Internal planning With the customer Agree on scope, boundaries, requirements, input/output Don’t take technical design descissions! Internal planning Review tools, infrastructure, manpower and time. Make technical design descissions Make a logical map of the project/script Sub-divide the tasks as functions and delegate

<# EXTERNAL PLANNING Scope: - Copy old home share to new location - Update AD object - Log results - Keep functionality of old script if possible (check logged on users, retry n number of times) Input: - CSV with two properties; username and path to new home share Output: - Logfile Documentation: n/a – commented code #>

<# INTERNAL PLANNING Language: PowerShell External tools: RoboCopy, OneNote Internal tools: Logging module External infrastructure: Active Directory Manpower: 2 people (50%) #>

<# INTERNAL PLANNING High level design v0 <# INTERNAL PLANNING High level design v0.1 – Logic: foreach user in input get old home share from AD copy files from old share to new share update user object in AD #>

<# v0.2 logic: foreach user in input get old home share from AD check if user have active connection to server (old home share) if active connection add user to skippedBecauseOfOpenFiles array copy files from old share to new share else update user object in AD #>

<# v0.3 logic: (impl. Number of passes and skipping of usrs) processingArray <- read input file do currentPass++ foreach input in processingArray do stuff (users found to have active connections will be added to skippedBecauseOfOpenFiles array) processingArray = skippedBecauseOfOpenFiles if skippedBecauseOfOpenFiles > 0 if delayBeforeNextPass Delay of x seconds until currentPass = numberOfPasses, or skippedBecauseOfOpenFiles = 0 #>

<# Mapping out sub-tasks as functions functions: Get-Info (get old home path, get server names destination and source servers, check if account is disabled etc) parameters: Username, Path output: custom object Invoke-SanityCheck (skip if account disabled, home path not found in ad, old and new home paths are equal, can't reach dest or source servers etc.) parameters: custom object output: boolean Get-UserConnection parameters: Username, Hostname Invoke-RoboCopyWrapper parameters: Path, Destination, Username Update-ADUser parameters: Username, PropertyValue Invoke-ProcessInput Logging functions #>

Development and Testing Create master script with dummy functions. One script file, or separate functions as dot-sources function files. Develop and test the main script logic. Team members develop functions separately. Update master script when all sub-tasks are done, and do a test-run with test data.

Demo of script logic with dummy functions

Documentation Document your code as you write it -> will save you time later on! Use best practices, don’t comment what’s obvious Use comment-based help in your functions! Extra documentation depends on the project scope, but if you are lucky, a copy/paste of your finished code could cover the documentation.

Delivery Conduct small scale test with customer using test data, and get approval that the requirements are met. Let them review the output (logs) and the documentation. Perform full test with subset of real data. Delivery to customer.

A quick look at the finished code Demo A quick look at the finished code

Lessons learned After project delivery, have a last project meeting to discuss lessons learned. Did you write any code that is reusable? (Logging module) What worked? What didn’t work?

Lessons learned Source control software (git or similar) Unit testing (Pester) Design logic for extensibilty, customer almost always want added functionality. Use a real Project Manager if you have one available.

Questions/Discussion? Do you have any practical project management tips?

Next Steps... Now: 15 min break Grab a coffee Stay here to enjoy next presentation Change track and switch to another room Ask me questions or meet me in a breakout session room afterwards

About_Author Twitter: @okallstad Blog: https//communary.wordpress.com