<#
.SNOPSYS
Excute Basic Powershell commands for absoulute beginners
.DESCRIPTION
This script is meant for education/demonstration purpose only
and not meant for production use
- This whole script is self explanatory
- The aim of this script is is introduce few basic of powershell which
would help to kick start using powershell
.NOTES
Author: Susheel Dakoju
Date Authored: 04/14/2015
#>
#--------------------------------------------------------------------------------
# Example 1: Windows PowerShell cmdlets similar to the .NET framework. See below
# Execute the following and see for yourself
# Most of the commandlet are in the form of Verb-Noun fashion
# 'Let' as told by Dictionary.com a diminutive suffix attached to nouns (booklet, piglet, ringlet, anklet, wristlet).
#--------------------------------------------------------------------------------
Get-Date
(Get-Date).GetType()
#--------------------------------------------------------------------------------
#Examplet 2: Similar to how you would do in .NET. ToShortDateString()can change the output format.
#The idea behind is example is show how simliar the experience would be for a .NET developer
#--------------------------------------------------------------------------------
(Get-Date).ToShortDateString().GetType()
#------------------------!IMPORTANT-----------------------------------------------
# Example 3: PIPELINES
# This is one of the most important concepts where one command can create object and pass on to the next command let
# This is not new and has been part for scripting for years.
# Another imprtant thing to notice is the Format-table option which lets you format your output.
#--------------------------------------------------------------------------------
Get-Process | Sort-Object -Property CPU -Descending | Select-Object -First 4 -Property CPU,VirtualMemorySize | Format-Table
#------------------------!IMPORTANT-----------------------------------------------
# Example 4: Alias
# Powershell ships with is own aliases this is for a good reason.
# For instance cls will work, but at the back ground it execure Clear-Host cmdlet
# You can create your Alias; Remembers Aliases are valid only per Session they
# get purged once session close use Import-Alias and Export-Alias commandlets
#--------------------------------------------------------------------------------
Get-Alias -Name dir # = Get-ChildItem
New-Alias ListItMyWay get-childitem
#--------------------------------------------------------------------------------
# Example 5: Variables and DataTypes
# Execute the following and check for yourself
#--------------------------------------------------------------------------------
$StoreMyInteger = 4
$StoreMyInteger.GetType()
$StoreMyString = "PowerShell Rocks!"
$StoreMyString.GetType()
Comparison and logical operators
#--------------------------------------------------------------------------------
# Example 6: Variables and DataTypes
# Execute the following and check for yourself
<#
#--------------------------------------------
a. Comparision Operators
#--------------------------------------------
-eq Equal
-ne Not equal
-ge Greater than or equal
-gt Greater than
-lt Less than
-le Less than or equal
-like Wildcard comparison
-notlike Wildcard comparison
-match Regular expression comparison
-notmatch Regular expression comparison
-replace Replace operator
-contains Containment operator
-notcontains Containment operator
-ceq Case-sensitive Equals
-creplace Case-sensitive replace
#--------------------------------------------
b. Types
#--------------------------------------------
-is Is of a type
-isnot Is not of a type
-as As a type, no error if conversion fails
#--------------------------------------------
c. Logical operators
#--------------------------------------------
-and Logical And
-or Logical Or
-not logical not
! logical not
#--------------------------------------------
d. Bitwise operators
#--------------------------------------------
-band Bitwise and
-bor Bitwise or
#--------------------------------------------
e. Format Operator
#--------------------------------------------
"format_string" -f Object1, Object2,...
#>
#>
#-----------
# Working with 'is' Operator: Re
#-----------
$stringValue = "PowerShell"
$stringValue -is "String"
# Just for fun know the retun Type
$($stringValue -is "String").GetType()
#-----------
# Working with 'eq' and 'ceq': Equal and Case-Sensitive Equal Operator
#-----------
$smallCase = "abc"
$UpperCase = "aBc"
$smallCase -ceq $UpperCase #return False
$smallCase -ceq $UpperCase #return True
#-----------
# Working with 'Like'
#-----------
"susheel" -like "sus*" #return true
#-----------
# Working with 'Replace'
#-----------
"Windows Command Prompt" -replace "Command Prompt","Power Shell"
#end of Example 6: Variables and DataTypes
#--------------------------------------------------------------------------------
# Example 7: Arrays
# These are similar to .NET Array. See ways to declare and use them
# The interesting part is to assign items of different types similar to C# Object Type
#--------------------------------------------------------------------------------
$array1 = @('1','2', (Get-Alias -Name cls))
#--------------------------------------------------------------------------------
# Example 8: Script Flow and Execution Control
# Only gave example for if, else. Try the others by yourself
# Conditional Execution: 1. if elseif else | 2. Switch | 3. Switch -option
# Iteration Statements: 1. For | 2. For Each | 3. While | 4. do while
#--------------------------------------------------------------------------------
if ($status) {
$output = "time Service is enabled"
} Else {
$output = "time service disabled"
}
Write-Output $output
#--------------------------------------------------------------------------------
# Example 9: Functions
# A very basic function to add numbers and how to execute it.
#--------------------------------------------------------------------------------
Function AddNumbers([int] $value1, [int] $value2)
{
return ($value1 + $value2)
}
AddNumbers 1 2
#----------------------***! Very Important !***----------------------------------
# Example 10: Execution Policy
# A very basic function to add numbers and how to execute it.
<#
a. Restricted: No script execution is allowed.
B. RemoteSigned: Script execution is allowed only for the scripts authored
on the local computer but not for any scripts from the external sources
Not be executed unless they are signed by a trusted publisher.
C. AllSigned: All the scripts must be signed by a trusted publisher including
scripts authored on the local computer
D. Unrestriced: All scripts ARE executed without any restriction.
#>
#--------------------------------------------------------------------------------
#----------------------
# Fetch the current Execution Policy
#----------------------
Get-ExecutionPolicy
#----------------------
# Set Execution Policy
#----------------------
Set-ExecutionPolicy -ExecutionPolicy Restricted
Month: April 2015
Introduction to PowerShell for Azure – Creating a VM
<pre><#
.SNOPSYS
Excute Basic Azure command and create a VM
.DESCRIPTION
This script is meant for education/demonstration purpose only
and not meant for production use
- Initial section of the script covers basics commands to get connected with Azure
- The rest of the script covers creating a VM with SQL Server running.
.NOTES
Author: Susheel Dakoju
Date Authored: 04/13/2015
#>
#-----------------------------------------------------------------------------
# 1. Connect to Azure: Option 1: Add-AzureAccount
#-----------------------------------------------------------------------------
#Connect
Add-AzureAccount
#Check subscription details
Get-AzureSubscription
#-----------------------------------------------------------------------------
# 1. Connect to Azure: Option 2: Get-AzurePublishSettingsFiles
#-----------------------------------------------------------------------------
#Download PublishSettingsFile
Get-AzurePublishSettingsFile
#Import Setting Files
Import-AzurePublishSettingsFile "C:PowershellAzureVisual Studio Ultimate with MSDN-4-14-2015-credentials.publishsettings"
#-----------------------------------------------------------------------------
# 2. Export all the exiting images in the VM Gallery and
# copy the name image you want to create
# Note: There are more elegant way of doing this.Here the most basic form is demonstration. See below
<#
$vmimages | where {$_.Label -like 'sql server 2014*'} | select Label, RecommendedVMSize, PublishedDate | Format-Table -AutoSize
$imgtouse = $vmimages | where {$_.Label -eq 'SQL Server 2014 RTM Enterprise on Windows Server 2012 R2' `
-and $_.PublishedDate -eq '6/9/2014 3:00:00 AM'} | select ImageName
#>
#-----------------------------------------------------------------------------
Get-AzureVMImage > C:PowershellAzureimages.txt
#-----------------------------------------------------------------------------
# 3. Create new Azure VM
#-----------------------------------------------------------------------------
New-AzureVMConfig -Name 'sdcapsandbox1' -InstanceSize Basic_A3 -ImageName 'fb83b3509582419d99629ce476bcb5c8__SQL-Server-2014-RTM-12.0.2361.0-Enterprise-ENU-Win2012R2-cy14su05' |`
Add-AzureProvisioningConfig -Windows -AdminUsername 'sdcapsandboxuser1' -Password 'Administrator@1234'|`
New-AzureVM -Location 'East US' -ServiceName 'sdcapsandbox1'
#-----------------------------------------------------------------------------
# 3.Check if the New VM is generated
#-----------------------------------------------------------------------------
#Get-AzureVM
#------------------------------------------------------------------------------------
# Optional: If New-AzureVM errors out on storage account. Keep the following handy
# - Use one of the storage accounts or create a new one run Set-AzureSubscription
#------------------------------------------------------------------------------------
#Get-AzureStorageAccount
#Set-AzureSubscription -SubscriptionId 16c41f83-c83e-476a-8fdc-51b8ae69849f -CurrentStorageAccount mystorageaccount
</pre>
Introduction to PowerShell for SharePoint Online -2
<# .SYNOPSIS Create SharePoint Sites on SharePoint Online .DESCRIPTION - This script demonstrated creating sites for SharePoint Online. -------------------------------------------------------------------------------- Code generated by: Susheel Dakoju., Windows Powershell Host v 3.0 Generated on: 04-12-2015 19:28 Generated by: Organization: -------------------------------------------------------------------------------- #> #SharePoint Online Information $SharePointOnlineURL = "https://contoso.sharepoint.com/" $SharePontOnlineAdminSiteURL = "https://contoso-admin.sharepoint.com/" $AdminUser = "usename@contoso.onmicrosoft.com" #New Site Information $newSiteURL = "testsite3" $newSiteTitle = "testsite3" $newsiteTemplate = "STS#0" #-------------------------------------------------------------------- #1. Create SharePoint Online Site #-------------------------------------------------------------------- #-------------------- # Connect to SharePoint Online Service #-------------------- Connect-SPOService -Url $SharePontOnlineAdminSiteURL -credential $AdminUser #Prepare Credentails $password = Read-Host -Prompt "Enter password" -AsSecureString $ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SharePointOnlineURL) $credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($AdminUser, $password) $ctx.Credentials = $credentials #Create Web $webCreationInformation = New-Object Microsoft.SharePoint.Client.WebCreationInformation $webCreationInformation.Url = $newSiteURL $webCreationInformation.Title = $newSiteTitle $webCreationInformation.WebTemplate = $newsiteTemplate $newWeb = $ctx.Web.Webs.Add($webCreationInformation) #Load and Execute $ctx.Load($newWeb) $ctx.ExecuteQuery() Write-Host "Title" $newWeb.Title #End of Create SharePoint Online Site
Introduction to Powershell for SharePoint Online -1
<# .SYNOPSIS #Basic command lets for SharePoint online .DESCRIPTION # This powershell script is generated just to get very basic understanding # of how you can connect with SharePoint Online and execute basic GET Commands # The scripts generates output in two formats CSV and HTML to two folder on the system .NOTES #Author: Susheel Dakoju. #Generated on: 04-12-2015 19:28 #Generated by: #Organization: Windows Powershell Host v 3.0 #> #Import-Module Microsoft.Online.Sharepoint.PowerShell <# 1.Connect-SPOService Description: Shows how a SharePoint Online global administrator with a user name and password connects to a SharePoint Online Administration Center that has the URL http://contoso-admin.sharepoint.com/. #> $URL = "https://contoso.sharepoint.com/" $AdminURL = "https://contoso-admin.sharepoint.com/" $AdminUser = "usernam@contoso.onmicrosoft.com" $csvurlprefix = "C:PowershellOutputcsv" $htmlurlprefix = "C:PowershellOutputhtml" Connect-SPOService -Url $AdminURL -credential $AdminUser #-----------------------------------------------------------------------------------------------# <# 2.Get-SPOSite Description: Lists the site collection with detailed properties. #> # Export to CSV Get-SPOSite $URL -Detailed | select * | Export-CSV -path "$($csvurlprefix)GetSPOsite_CSV.csv" # Export to HTML Get-SPOSite $URL -Detailed | select * | ConvertTo-Html | Set-Content "$($htmlurlprefix)GetSPOsite_HTML.html" #-----------------------------------------------------------------------------------------------# <# 3. Get-SPOTenant Description: Returns the organization-level site collection properties such as StorageQuota, StorageQuotaAllocated, ResourceQuota,ResourceQuotaAllocated, and SiteCreationMode. #> # Export to CSV Get-SPOTenant | Export-CSV -path "$($csvurlprefix)GetSPOTenat_CSV.csv" # Export to HTML Get-SPOTenant | ConvertTo-Html | Set-Content "$($htmlurlprefix)GetSPOTenant_HTML.html" #-----------------------------------------------------------------------------------------------# <# 4. Get-SPOUser Description: Returns one user or security group account inside group Team Site Members from the site collection #> # Export to CSV Get-SPOUser -Site $URL | Export-CSV -path "$($csvurlprefix)GetSPOUser_CSV.csv" # Export to HTML Get-SPOUser -Site $URL| ConvertTo-Html | Set-Content "$($htmlurlprefix)GetSPOUser_HTML.html" <# 5. Get-SPOSiteGroup #> #Gets all the groups on the specified site collection. # Export to CSV Get-SPOSiteGroup -Site $URL | Export-CSV -path "$($csvurlprefix)SPOSiteGroup_CSV.csv" # Export to HTML Get-SPOSiteGroup -Site $URL | ConvertTo-Html | Set-Content "$($htmlurlprefix)SPOSiteGroup_HTML.html"
Introduction to PowerShell for SharePoint 2013 -2 (Administration)
&lt;# .SYNOPSIS -------------------------------------------------------------------------------- Code generated by: Susheel Dakoju., Windows Powershell Host v 3.0 Generated on: 04-11-2015 19:28 Generated by: Organization: -------------------------------------------------------------------------------- .DESCRIPTION - This script is generated for Capital Area .NET SharePoint Special Interest Group Meetup demonstration of basic Powershell commands for SharePoint - This script is running against SharePoint 2013 powered by Powershell version 3.0 - Run as administrator to run the script sucessfully. - This script is not for production use. The commenting and Intending is done to suite for quick demonstration and may not be adopted for organizational use -------------------------------------------------------------------------------- #&gt; #---------------------------------------------------------------------# #1. Create a new SiteCollection #Prequsites/Assumption: A ready made webapplication with no root sitecollection created via GUI or Powershell #---------------------------------------------------------------------# New-SPSite -OwnerAlias SDsdakoju -Url http://contoso.com:4234/ -Name "CAPAREA SharePoint Demo 1" -Template STS#1 #---------------------------------------------------------------------# #2. Create multiple new SiteCollection #Prequsites/Assumption: A ready made webapplication along with root site sitecollection created via GUI or Powershell #---------------------------------------------------------------------# #----------------------- #Create a new managed path #----------------------- New-SPManagedPath –RelativeURL "demo1" -WebApplication "http://contoso.com:4234/" #----------------------- #Create a new multiple sites #----------------------- New-SPSite -OwnerAlias SDsdakoju -Url http://contoso.com:4234/demo1/test -Name "CAPAREA SharePoint Demo 1" -Template STS#1 #already created New-SPSite -OwnerAlias SDsdakoju -Url http://contoso.com:4234/demo1/test1 -Name "CAPAREA SharePoint Demo 1" -Template STS#1 #already created New-SPSite -OwnerAlias SDsdakoju -Url http://contoso.com:4234/demo1/test2 -Name "CAPAREA SharePoint Demo 1" -Template STS#1 #already created New-SPSite -OwnerAlias SDsdakoju -Url http://contoso.com:4234/demo1/test3 -Name "CAPAREA SharePoint Demo 1" -Template STS#0 #already created #---------------------------------------------------------------------# #3.Remove/Delete SiteCollection #---------------------------------------------------------------------# Remove-SPSite -Identity http://contoso.com:4234/demo1/test2 -Confirm #Check if deleted Get-SPSite -WebApplication http://contoso.com:4234/ #---------------------------------------------------------------------# #3.Export a site #All the operation in this section can be done even with UI under Back up and Restore section in CA #---------------------------------------------------------------------# Export-SPWeb -Identity http://contoso.com:4234/demo1/test3 -Path demo1_test3.cmp #---------------------------------------------------------------------# #4.Import a site #All the operation in this section can be done even with UI under Back up and Restore section in CA #---------------------------------------------------------------------# Import-SPWeb -Identity http://contoso.com:1234/ -Path demo1_test3.cmp -Confirm -Force #---------------------------------------------------------------------# #5.Export a List or Library # This is similar to Exporting a whole SPWEB but if Item URL is specified it exports only that. #---------------------------------------------------------------------# Export-SPWeb -Identity http://contoso.com:4234/demo1/test3/ -Path demo1_test3_doc1.cmp -ItemUrl "/demo1/test3/Shared Documents" #---------------------------------------------------------------------# #6.Import a List or Library # This is similar to Importing a whole SPWEB, since Item URL is specified in export, import will get list only. #---------------------------------------------------------------------# Import-SPWeb -Identity http://contoso.com:1234/capareademo1/ -Path demo1_test3_doc1.cmp -Confirm -Force
Introduction to PowerShell for SharePoint 2013 -1 (Developer)
<#
.SYNOPSIS
--------------------------------------------------------------------------------
Code generated by: Susheel Dakoju., Windows Powershell Host v 3.0
Generated on: 04-11-2015 19:28
Generated by:
Organization:
--------------------------------------------------------------------------------
.DESCRIPTION
- This script is generated for Capital Area .NET SharePoint Special Interest Group Meetup demonstration of basic Powershell commands for SharePoint
- This script is running against SharePoint 2013 powered by Powershell version 3.0
- Run as administrator to run the script sucessfully.
- This script is not for production use. The commenting and Intending is done to suite for quick demonstration and may not be adopted for organizational use
--------------------------------------------------------------------------------
#>
#---------------------------------------------------------------------------------------#
# Getting Started
#---------------------------------------------------------------------------------------#
#---------------------------------------------------------------------#
#1. Get Current Powershell Version
#---------------------------------------------------------------------#
$PSVersionTable.PSVersion
#---------------------------------------------------------------------#
#2. Get count of Commands with 'SP' in the name SharePoint Snap-In
#---------------------------------------------------------------------#
Get-Help *sp* | Measure-Object
#---------------------------------------------------------------------#
#3. Get count of Commands with 'SP' in the name BEFORE ADDING SharePoint Snap-In
#---------------------------------------------------------------------#
Add-PSSnapin -Name Microsoft.SharePoint.Powershell
Get-Help *sp* | Measure-Object
#---------------------------------------------------------------------#
#4. Get count of Cmdlets with 'sp' in the name AFTER ADDING SharePoint Snap-In
#---------------------------------------------------------------------#
Get-Command *sp* | Where {$_.CommandType -match "cmdlet" }| Measure-Object
Get-Help *sp* | Measure-Object
#---------------------------------------------------------------------#
#5. Get count of Applications with 'sp' in the name AFTER ADDING SharePoint Snap-In
#---------------------------------------------------------------------#
Get-Command *sp* | Where {$_.CommandType -match "Application" }| Measure-Object
Get-Help *sp* | Measure-Object
#---------------------------------------------------------------------#
#6. Get count of Applications with 'sp' in the name AFTER ADDING SharePoint Snap-In
#---------------------------------------------------------------------#
Get-Command *sp* | Where {$_.CommandType -Match "cmdlet" -and $_.ModuleName -Match "Microsoft.SharePoint.PowerShell" }| Measure-Object
Get-Help *sp* | Measure-Object
#---------------------------------------------------------------------------------------#
# Developer: The folloowing script block creats and add content to SharePoint 2013 Sites
#---------------------------------------------------------------------------------------#
#---------------------------------------------------------------------#
#1. Get all available Web Templates
#---------------------------------------------------------------------#
Get-SPWebTemplate
#---------------------------------------------------------------------#
#2. Get availablet Web Templates which are team site or black site
#---------------------------------------------------------------------#
Get-SPWebTemplate | Where {$_.Title -match "Team Site" -or $_.Title -match "Blank Site"}
#---------------------------------------------------------------------#
#3. Demo: Insert Command from Show-Command window
#---------------------------------------------------------------------#
Show-Command
#New-SPWeb -Url http://conteso.com:1234/capareademo1/Caparea_1 -AddToTopNav -Name Caparea_1 -Template STS#1 -UseParentTopNav
#New-SPWeb -Url http://conteso.com:1234/capareademo1/Caparea_2 -AddToTopNav -Name Caparea_2 -Template STS#1 -UseParentTopNav
#----------------------**** Important *****---------------------------#
#4. The Start-SPAssignment cmdlet properly disposes of objects used with variable assignments
# 'Global' Parameter- All objects are assigned to the lifetime of the script
# Read more at : https://technet.microsoft.com/en-us/library/ff607664.aspx
#---------------------------------------------------------------------#
Start-SPAssignment -Global
#---------------------------------------------------------------------#
#5. Create two SharePoint List of Type Tasks and Document Library.
#---------------------------------------------------------------------#
$web = Get-SPWeb -Identity http://conteso:1234/capareademo1/Caparea_1
$web.Lists.Add("Project Tasks", "Holds Project Tasks","Tasks")
$web.Lists.Add("Project Documents", "Holds Project Documents","DocumentLibrary")
#---------------------------------------------------------------------#
#6. Updating SharePoint Content
#---------------------------------------------------------------------#
$lst = $web.Lists["Project Tasks"]
$lst.Title = "Project Tasks 1"
$lst.Update()
#forget update
#---------------------------------------------------------------------#
#7. Remove SharePoint Content
#---------------------------------------------------------------------#
Remove-SPWeb -Identity http://conteso.com:1234/capareademo1/Caparea_1 -Confirm
Remove-SPWeb -Identity http://conteso.com:1234/capareademo1/Caparea_2 -Confirm
#-------------------------**** Important *****------------------------#
#4. The Stop-SPAssignment cmdlet properly disposes of objects used with variable assignments
# 'Global' Parameter- Disposed of when the Stop-SPAssignment cmdlet is called
# Read more at : https://technet.microsoft.com/en-us/library/ff607664.aspx
#---------------------------------------------------------------------#
Stop-SPAssignment -Global