Slide Deck, photos and resources from my Session at ATLPUG
The Atlanta PowerShell User’s Group first meeting at iVision went off wonderfully! We had a solid turn out, plenty of pizza and soda, and talked a whole lot about PowerShell, what’s new, and whats coming.
Here’s the demo I worked through exploring features using the ISE  Props to Mike Robbins for showing me this technique!
#Check our Version, needs to be greater than 5.0. version 9814 is the most up to date version (September preview)
Get-host | Select-Object -Property Version
#region Working with Archives Set-location C:\\Demo
#Something to do with Archives, so lets look for ZIP Get-Command \*-Zip
Get-Command \*-Archive
Compress-Archive -Path C:\\demo -DestinationPath c:\\demo\\Files.zip -CompressionLevel Optimal #mkdir Unzipped
#endregion
#region Modules #Find-module #xActiveDirectory, xJea,
Find-Module
#endregion
#region #ONEGET
#One-Get is Apt-Get come to Windows. It is awesome!
#Import the Module Import-Module OneGet
#List all commands for the module, will prompt to install nuget Get-Command -Module OneGet
#Search your repo's for packages available DONT RUN! $OriginalPackages = Find-Package
#Number of packages Find-Package | Measure-Object | Select -Property Sum
#Not that many apps, where'd they all go? Let's check our package Sources Get-PackageSource
#by default, we only have PSGallery and MSPSGallery as sources...let's add Chocolatey. Previously this was Add-PackageSource, it's changed! $PackageSourceLocation = "http://chocolatey.org/api/v2" Register-PackageSource -ProviderName PSModule -Name Chocolatey -Location $PackageSourceLocation -Trusted -VERBOSE
#After adding Chcolatey DONT RUN! $FullPackages = find-package
#Total count of packages now ~ Find-Package | Measure-Object | Select -Property Sum
find-package evernote
#Search for apps with a summary that mentions PDF find-package | Where Summary -like "\*pdf\*"
find-package evernote | install-package -force #endregion
#region Convert-FromString $TraceRT = tracert -h 6 -w 45 microsoft.com #hops 6, -waiting 45 milliseconds
$TraceRT\[(3..12)\] #Skip the first few lines
$TraceRT\[(3..12)\] -replace "^\\s+" | ConvertFrom-String -PropertyNames Hop,Latency1,Latency2,Latency3,ServerName,ServerIP #Props to Francois Xavier Cat for this regex and general idea
$TraceRT\[(3..10)\] -replace "^\\s+" -replace 'ms','' -replace '\[ \\t\]+$','' | ConvertFrom-String -PropertyNames Hop,Latency1,Latency2,Latency3,ServerName,ServerIP
#endregion
#region DSC Stuff #Remove-item $env:windir\\system32\\MonitoringSoftware -Confirm -Force
Configuration InstallXMLNotePad { param(\[string\[\]\]$MachineName="localhost")
Node $MachineName { File InstallFilesPresent { Ensure = "Present" SourcePath = "\\\\localhost\\Installer" DestinationPath = "C:\\Demo\\InstallFiles" Type = "Directory" Recurse=$true # can only use this guy on a Directory }
Package XMLNotePad { Ensure = "Present" # You can also set Ensure to "Absent" Path = "C:\\Demo\\InstallFiles\\XmlNotepad.msi" Name = "XML Notepad 2007" ProductId = "FC7BACF0-1FFA-4605-B3B4-A66AB382752D" DependsOn= "\[File\]InstallFilesPresent" }
}
}
InstallXMLNotePad
Start-DscConfiguration -Path InstallXMLNotePad -Wait -Verbose -Force #endregion
#Cleanup Demo Unregister-PackageSource -ProviderName PSModule -Name Chocolatey
Here’s the function we created on stage, which recieves and parses output from Trace Route using Convert-FromString.
function Test-Route{ param( $ServerName='microsoft.com', $Hops=6, $Wait=45 )
Write-Host "Tracing Route from localhost to $Servername, capturing $Hops Hops and waiting $Wait MS" $TraceRT = tracert -h $Hops -w $Wait $ServerName #hops 6, -waiting 45 milliseconds
$TraceRT\[(3..10)\] -replace "^\\s+" -replace 'ms','' -replace '\[ \\t\]+$','' | ConvertFrom-String -PropertyNames Hop,Latency1,Latency2,Latency3,ServerName,ServerIP }