Kenneth Hansen Program Manager Microsoft Corporation Steven Murawski, MVP System Administrator StackExchange Great Terrible Business is Good More servers => $$ => More Failures We have a Job.

Download Report

Transcript Kenneth Hansen Program Manager Microsoft Corporation Steven Murawski, MVP System Administrator StackExchange Great Terrible Business is Good More servers => $$ => More Failures We have a Job.

Kenneth Hansen
Program Manager
Microsoft Corporation
Steven Murawski, MVP
System Administrator
StackExchange
Great
Terrible
Business is Good
More servers
=> $$
=> More Failures
We have a Job
Great
Terrible
Business can respond More Change
to match the market => More Failures
=> $$
We have a Job
Idea
$$
audit
automation
survive failures
• for a single server
• and its devices
many
• on
connect
physical virtual
off
Thousands more in Windows Server 2012
Workflow
Web
Other
ISE
Integrated Scripting Environment
Windows
PowerShell ISE
Command
Discovery
Help System
Improvements
Syntax &
Language
• IntelliSense
• Tab completion
• Editor
enhancements
• Autosave support
• Snippets
• Get-Command
discovery cache
• Automatic module
importing
• Show-Command
• Run with PowerShell
• Updatable help
• Contextual F1
• Get-Help
˗ShowWindow
• Word wrap in help
output
• Simplified Where &
ForEach
• $PSItem alias for $_
• Array syntax for
singletons
• Get-ChildItem
Types of
Remoting
Interactive
Command
Why
Enter-PSSession
Like I’m on that computer
Background Invoke-Command -AsJob
FanOut
FanIn
…and…
Sessions
When it’s going to take a while
Invoke-Command –Computer When I need to do it on a lot of
computers
Import-PSSession -Session
Brings that computer “local”
New-PSSession
Enables a persistent connection
Intent
Environment
Configuration
$WebConfigEnv = @{
ComputerName = $VMServerNames
Name = 'FourthCoffee'
}
…
Structural
Configuration
$WindowsFeature = @{
Name="Web-Server",
"Web-ASP-NET45"
Ensure="Present"
}
…
Idempotent
Automation
foreach -parallel ($featureName in $Name)
{
$feature = Get-WindowsFeature -Name $featureName
if(($Ensure -eq "Present") -and (!$feature.Installed))
{
Install-WindowsFeature -Name $featureName
}
….
}
…
(Dev -> Test -> Production)
Make It So
Bugs
Suggestions