Microsoft Ignite Australia 2017 Sessions Downloader

Microsoft Ignite Australia 2017 Sessions Downloader

Following on from my previous post on downloading the New Zealand Ignite 2016 session downloader, I have modified the script to help download the Australian Ignite 2017 Content as well. The content is still getting updated as the Conference only finished last Friday 17th February 2017.

Vlad Catrinescu is a SharePoint and Office 365 MVP and also a Pluralsight Author. You can find him on Twitter and on his Blog . He has written an awesome PowerShell script which has been around for the last few Ignites, wherein which you can download the Sessions, slides and videos from Channel 9 for Offline Browsing. I have used the same script by editing it to download the Australian Ignite 2017 Sessions.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
#Script written by Vlad Catrinescu
#Visit my site www.absolute-sharepoint.com
#Twitter: @vladcatrinescu
#Originally Posted here: https://absolute-sharepoint.com/2016/10/the-ultimate-script-to-download-microsoft-ignite-2016-videos-and-slides

#Edited by Aben Samuel (@neop26) to download the Australia 2017 Ignite Content

Param(
[string]$keyword,[string]$session
)

###### Variables #####

#Location - Preferably enter something not too long to not have filename problems! cut and paste them afterwards
$downloadlocation = "D:\Ig"
#Ignite 2016 Videos RSS Feed
[Environment]::CurrentDirectory=(Get-Location -PSProvider FileSystem).ProviderPath
$rss = (new-object net.webclient)
$video1 = ([xml]$rss.downloadstring("http://s.ch9.ms/events/ignite/Australia-2017/rss/mp4high"))
$video2 = ([xml]$rss.downloadstring("http://s.ch9.ms/events/ignite/Australia-2017/rss/mp4high?page=2"))
#other qualities for the videos only. Uncomment below and delete the two previous lines to download Mid Quality videos
#$video1 = ([xml]$rss.downloadstring("http://s.ch9.ms/events/ignite/Australia-2017/rss/mp4"))
#$video2 = ([xml]$rss.downloadstring("http://s.ch9.ms/events/ignite/Australia-2017/rss/mp4?page=2"))
$slide1 = ([xml]$rss.downloadstring("http://s.ch9.ms/events/ignite/Australia-2017/rss/slides"))
$slide2 = ([xml]$rss.downloadstring("http://s.ch9.ms/events/ignite/Australia-2017/rss/slides?page=2"))

#SCRIPT/ Functions Do not touch below this line :)#
if (-not (Test-Path $downloadlocation)) {
Write-Host "Folder $fpath dosen't exist. Creating it..."
New-Item $downloadlocation -type directory | Out-Null
}
set-location $downloadlocation

function CleanFilename($filename)
{
return $filename.Replace(":", "-").Replace("?", "").Replace("/", "-").Replace("<", "").Replace("|", "").Replace('"',"").Replace("*","")
}

function DownloadSlides($filter,$videourl)
{
try
{
$videourl.rss.channel.item | Where{($_.title -like “*$filter*”) -or ($_.link -like "*/$filter")} |
foreach {
$code = $_.comments.split("/") | select -last 1

# Grab the URL for the PPTX file
$urlpptx = New-Object System.Uri($_.enclosure.url)
$filepptx = $code + "-" + $_.creator + "-" + (CleanFileName($_.title))
$filepptx = $filepptx.substring(0, [System.Math]::Min(120, $filepptx.Length))
$filepptx = $filepptx.trim()
$filepptx = $filepptx + ".pptx"
if ($code -ne "")
{
$folder = $code + " - " + (CleanFileName($_.title))
$folder = $folder.substring(0, [System.Math]::Min(100, $folder.Length))
$folder = $folder.trim()
}
else
{
$folder = "NoCodeSessions"
}

if (-not (Test-Path $folder)) {
Write-Host "Folder $folder dosen't exist. Creating it..."
New-Item $folder -type directory | Out-Null
}

# Make sure the PowerPoint file doesn't already exist
if (!(test-path "$downloadlocation\$folder\$filepptx"))
{
# Echo out the file that's being downloaded
write-host "Downloading slides: $filepptx"
#$wc = (New-Object System.Net.WebClient)

# Download the MP4 file
#$wc.DownloadFile($urlpptx, "$downloadlocation\$filepptx")
Start-BitsTransfer $urlpptx "$downloadlocation\$filepptx" -DisplayName $filepptx
mv $filepptx $folder

}
else
{
write-host "Slides exist: $filepptx"
}
}

}

catch
{
$ErrorMessage = $_.Exception.Message
Write-host "$ErrorMessage"
}
}

function DownloadVideos($filter,$slideurl)
{
#download all the mp4
# Walk through each item in the feed
$slideurl.rss.channel.item | Where{($_.title -like “*$filter*”) -or ($_.link -like "*/$filter*")} | foreach{
$code = $_.comments.split("/") | select -last 1

# Grab the URL for the MP4 file
$url = New-Object System.Uri($_.enclosure.url)

# Create the local file name for the MP4 download
$file = $code + "-" + $_.creator + "-" + (CleanFileName($_.title))
$file = $file.substring(0, [System.Math]::Min(120, $file.Length))
$file = $file.trim()
$file = $file + ".mp4"

if ($code -ne "")
{
$folder = $code + " - " + (CleanFileName($_.title))
$folder = $folder.substring(0, [System.Math]::Min(100, $folder.Length))
$folder = $folder.trim()
}
else
{
$folder = "NoCodeSessions"
}

if (-not (Test-Path $folder)) {
Write-Host "Folder $folder) dosen't exist. Creating it..."
New-Item $folder -type directory | Out-Null
}

# Make sure the MP4 file doesn't already exist

if (!(test-path "$folder\$file"))
{
# Echo out the file that's being downloaded
write-host "Downloading video: $file"
#$wc = (New-Object System.Net.WebClient)

# Download the MP4 file
Start-BitsTransfer $url "$downloadlocation\$file" -DisplayName $file
mv $file $folder
}
else
{
write-host "Video exists: $file"
}

#text description from session
$OutFile = New-Item -type file "$($downloadlocation)\$($Folder)\$($Code.trim()).txt" -Force
$Category = "" ; $Content = ""
$_.category | foreach {$Category += $_ + ","}
$Content = $_.title.trim() + "`r`n" + $_.creator + "`r`n" + $_.summary.trim() + "`r`n" + "`r`n" + $Category.Substring(0,$Category.Length -1)
add-content $OutFile $Content

}
}

if ($keyword)
{
$keywords = $keyword.split(",")

foreach ($k in $keywords)
{
$k.trim()
Write-Host "You are now downloading the sessions with the keyword $k"
DownloadSlides $k $slide1
DownloadSlides $k $slide2
DownloadVideos $k $video1
DownloadVideos $k $video2
}
}
elseif ($session)
{
$sessions = $session.Split(",")

foreach ($s in $sessions)
{
$s.trim()
Write-Host "You are now downloading the session $s"
DownloadSlides $s $slide1
DownloadSlides $s $slide2
DownloadVideos $s $video1
DownloadVideos $s $video2
}

}
else
{
DownloadSlides " " $slide1
DownloadSlides " " $slide2
DownloadVideos " " $video1
DownloadVideos " " $video2
}

This post has the scripts to help download the NZ Ignite 2016 Content.
Cheers

Full Script: AustraliaIgnite2017PowerShellScript

SharePoint 2013 – Common Sense: Licensing

SharePoint 2013 – Common Sense: Licensing

SharePoint 2013 and its predecessors were licenses based on Standard and Enterprise license CAL. Whether a standard and an enterprise license CAL has been applied to a SharePoint farm determined what features were enabled or disabled. Traditionally an organization had to determine whether to purchase Standard CAL or Enterprise CAL for all its end users. In a lot of scenario’s this proved to be quite expensive for many organizations since they had to purchase Enterprise CAL for all their users in spite of the fact that there might be only a handful of users within their organization that required the Enterprise Features.

Microsoft listened and SharePoint 2013 brings in “Common Sense” into Licensing.

Organizations can now decide and then delegate specific users to be entitled to use “Standard License CAL” or “Enterprise License CAL” which lets SharePoint decide with the situation when a user navigates to a page what sort of license is presented to them.

Enterprise License CAL entities users to the following features:

  • Taxonomy Refinement Panel
  • Catalogue-Item Reuse
  • Business Data Actions
  • Business Data Connectivity Filter
  • Business Data Item
  • Business Data Item Builder
  • Business Data List
  • Business Data Related List
  • Search-Driven Content (all web parts)
  • InfoPath Form Web part
  • Excel Web Access
  • Visio Web Access
  • PerformancePoint Filter, Report, Scorecard and Stack Selector
  • Indicator Details (deprecated feature – may be present when upgrading from 2010 to 2013)
  • Status List (deprecated feature – may be present when upgrading from 2010 to 2013)

 

Standard License CAL entitles users to all other features within SharePoint 2013.

 

This is all possible with the release of a new feature / functionality called User License Enforcement

 

User License Enforcement

 

Any default installation of a SharePoint 2013 farm has its user license enforcement turned “Off”. To enable, SharePoint Admin’s have to use PowerShell. Admin’s also have the right to disable this feature if the need arises.

 

  • Enable-SPUserLicensing
  • Disable-SPUserLicensing
  • Get-SPUserLicense

 

Refer to this TechNet article for all the available PowerShell commands.

 

Enforcement of License Assignment

 

A user is assigned their unique license using Active Directory Group Membership. This means a certain “Active Directory Group” can be “mapped” to either Standard or Enterprise License. With SharePoint 2013 there are in total 5 different categories that can be used for mapping users:

 

  • Enterprise
  • Standard
  • WAC – Office Web Apps
  • Project
  • Duet

     

Users do have the ability to be part of multiple categories.

 

AD Group is one way of mapping users. The other method is to use “Claim” to a user license.

 

GOTCHA

 

  • Yep they exist. Once User License Enforcement is enabled all users of SharePoint 2013 have to be mapped to some category. Otherwise even normal users (for sake of eg: Standard Users in our eyes) would be denied Standard Features as well.
  • Only works with Claims Based Web Application (which is the preferred authentication provider within SharePoint 2013 for a lot of things to work J )

 

 

Cool Stuff

 

The other cool thing about enforcement is the ability to log what sort of feature was accessed by a user and what license they have. If a user tries to access an unlicensed feature the log would read “Unlicensed”.

 

Final Word

 

About time J . This feature gives organizations the ability to call SharePoint 2013 a reasonable investment.

IIS reset your whole SharePoint Farm

IIS reset your whole SharePoint Farm

One of my current projects involves building a farm with Multiple SharePoint servers. One of the painful processes is doing an IISReset across the farm. There are few solutions out there and this is the one I wrote couple of days back using their logic.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
cls
Write-Host "Loading SharePoint Commandlets"
Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue
Write-Host -ForegroundColor Green " Commandlets Loaded ... Loading Variables"
Write-Host
[array]$servers= Get-SPServer | ? {$_.Role -eq "Application"}
$farm = Get-SPFarm
foreach ($server in $servers)
{
     Write-Host -ForegroundColor Yellow "Attempting to reset IIS for $server"
        iisreset $server /noforce "\\"$_.Address
        iisreset $server /status "\\"$_.Address
        Write-Host
        Write-Host -ForegroundColor Green "IIS has been reset for $server"
        Write-Host
}
Write-Host -ForegroundColor Green "IIS has been reset across the SharePoint Farm"
Start-Sleep -Seconds 5
Write-host

Peace!

Installing SQL 2012 on Windows 2008 R2 Core SP1

Installing SQL 2012 on Windows 2008 R2 Core SP1

Scenario:

Windows 2008 R2 Core SP1 – Domain joined, updated.

Denali RC0 ISO File attached to VM.

Preparing Windows 2008 R2 Core for Installation

  1. Run the following Command File to pre prep the server.
1
2
3
4
5
6
7
8
9
DISM /Online /Enable-Feature /FeatureName:ServerCore-WOW64
DISM /Online /Enable-Feature /FeatureName:NetFx2-ServerCore
DISM /Online /Enable-Feature /FeatureName:NetFx2-ServerCore-WOW64
DISM /Online /Enable-Feature /FeatureName:NetFx3-ServerCore
DISM /Online /Enable-Feature /FeatureName:NetFx3-ServerCore-WOW64
DISM /Online /Enable-Feature /FeatureName:MicrosoftWindowsPowerShell
Start /w ocsetup ServerCore-WOW64
Start /w ocsetup NetFx2-ServerCore
Start /w ocsetup NetFx2-ServerCore-WOW64
  1. Download a special .net 4 package for Windows 2008 R2 Core from this location here.
  2. Run the .net 4 package and have it installed.
  3. Run sconfig.cmd and choose option 6 to install any further updates.
  4. Reboot the server

After this process, the Windows 2008 R2 SP1 Core is ready to be installed with Denali.

Installing Denali

  1. Denali can only be installed on command line prompt at this stage. But as far as testing goes, with some special modifications you can modify the installation experience to involve the GUI mode as well.
  2. The process described here involves , my favourite way of installing SQL, using a configuration file.

Configuration File

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
;SQL Server "2012" RC0 Configuration File
[OPTIONS]

; Specifies a Setup work flow, like INSTALL, UNINSTALL, or UPGRADE. This is a required parameter.

ACTION="Install"

; Detailed help for command line argument ENU has not been defined yet.

ENU="True"

; Parameter that controls the user interface behavior. Valid values are Normal for the full UI,AutoAdvance for a simplied UI, and EnableUIOnServerCore for bypassing Server Core setup GUI block.

;UIMODE="Normal"

; Setup will not display any user interface.

QUIET="False"

; Setup will display progress only, without any user interaction.

QUIETSIMPLE="True"

; Specify whether SQL Server Setup should discover and include product updates. The valid values are True and False or 1 and 0. By default SQL Server Setup will include updates that are found.

UpdateEnabled="True"

; Specifies features to install, uninstall, or upgrade. The list of top-level features include SQL, AS, RS, IS, MDS, and Tools. The SQL feature will install the Database Engine, Replication, Full-Text, and Data Quality Services (DQS) server. The Tools feature will install Management Tools, Books online components, SQL Server Data Tools, and other shared components.

FEATURES=SQLENGINE,REPLICATION

; Specify the location where SQL Server Setup will obtain product updates. The valid values are "MU" to search Microsoft Update, a valid folder path, a relative path such as .\MyUpdates or a UNC share. By default SQL Server Setup will search Microsoft Update or a Windows Update service through the Window Server Update Services.

UpdateSource="MU"

; Displays the command line parameters usage

HELP="False"

; Specifies that the detailed Setup log should be piped to the console.

INDICATEPROGRESS="False"

; Specifies that Setup should install into WOW64. This command line argument is not supported on an IA64 or a 32-bit system.

X86="False"

; Specify the root installation directory for shared components. This directory remains unchanged after shared components are already installed.

INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server"

; Specify the root installation directory for the WOW64 shared components. This directory remains unchanged after WOW64 shared components are already installed.

INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server"

; Specify a default or named instance. MSSQLSERVER is the default instance for non-Express editions and SQLExpress for Express editions. This parameter is required when installing the SQL Server Database Engine (SQL), Analysis Services (AS), or Reporting Services (RS).

INSTANCENAME="MSSQLSERVER"

; Specify the Instance ID for the SQL Server features you have specified. SQL Server directory structure, registry structure, and service names will incorporate the instance ID of the SQL Server instance.

INSTANCEID="MSSQLSERVER"

; Specify that SQL Server feature usage data can be collected and sent to Microsoft. Specify 1 or True to enable and 0 or False to disable this feature.

SQMREPORTING="True"

; Specify if errors can be reported to Microsoft to improve future SQL Server releases. Specify 1 or True to enable and 0 or False to disable this feature.

ERRORREPORTING="False"

; Specify the installation directory.

INSTANCEDIR="C:\Program Files\Microsoft SQL Server"

; Agent account name

AGTSVCACCOUNT="DOMAIN_NAME\SQL_SERVICE_ACCOUNT"
AGTSVCPASSWORD="SERVICE_ACCOUNT_PASSWORD"

; Auto-start service after installation.

AGTSVCSTARTUPTYPE="Automatic"

; CM brick TCP communication port

COMMFABRICPORT="0"

; How matrix will use private networks

COMMFABRICNETWORKLEVEL="0"

; How inter brick communication will be protected

COMMFABRICENCRYPTION="0"

; TCP port used by the CM brick

MATRIXCMBRICKCOMMPORT="0"

; Startup type for the SQL Server service.

SQLSVCSTARTUPTYPE="Automatic"

; Level to enable FILESTREAM feature at (0, 1, 2 or 3).

FILESTREAMLEVEL="0"

; Set to "1" to enable RANU for SQL Server Express.

ENABLERANU="False"

; Specifies a Windows collation or an SQL collation to use for the Database Engine.

SQLCOLLATION="Latin1_General_CI_AS"

; Account for SQL Server service: Domain\User or system account.

SQLSVCACCOUNT="DOMAIN_NAME\SQL_SERVICE_ACCOUNT"
SQLSVCPASSWORD="SERVICE_ACCOUNT_PASSWORD"

; Windows account(s) to provision as SQL Server system administrators.

SQLSYSADMINACCOUNTS="DOMAIN_NAME\SQL_ADMIN_ACCOUNT1" "DOMAIN_NAME\SQL_ADMIN_ACCOUNT2"

; Provision current user as a Database Engine system administrator for SQL Server 2012 RC0 Express.

ADDCURRENTUSERASSQLADMIN="False"

; Specify 0 to disable or 1 to enable the TCP/IP protocol.

TCPENABLED="1"

; Specify 0 to disable or 1 to enable the Named Pipes protocol.

NPENABLED="0"

; Startup type for Browser Service.

BROWSERSVCSTARTUPTYPE="Disabled"
IACCEPTSQLSERVERLICENSETERMS="TRUE"

Description for the configuration file

  1. Install mode to install a fresh install of Denali
  2. Installs only the Database engine and the Replication Service for SQL
  3. No Management Studio and Tools
  4. Uses default location for Data, Log , TempDB, TempLog and Backup File Location
  5. Domain_Name to be replaced with the domain name
  6. SQL_SERVICE_ACCOUNT to be replaced with the SQL Service account that you would use to run the SQL Services for Database , SSRS etc
  7. SERVICE_ACCOUNT_PASSWORD – password for all the service accounts
  8. SQL_ADMIN__ACCOUNT1 and 2 is for the SQL Admin Account.

Command Line file to kick start the Denali Installation using the above mentioned Config File

1
D:\Setup.exe /CONFIGURATIONFILE="C:\Scripts\SQL\DenaliConfig.ini" /INDICATEPROGRESS /SkipRules=NoReboot

Description for the command line file

  1. D:\Setup.exe – location of your Denali ISO or Media
  2. “C:\Scripts\SQL\DenaliConfig.ini” – location of this command line and config file on the Core SP1 server.
  3. /SkipRules=NoReboot – Issue with Core installation involving Denali – need this parameter for it to work. Reboot the system after installation is completed J

To have a view of all the parameters and installations available using configuration file here over here.

Tips and Tricks I picked up during this process

  1. To get to making folders and copying files (.net 4 installer , scripts etc.) over to the server core , try browsing from another domain joined machine to the core machine using \\NAME_CORE_SERVER\C$
  2. Spend some time on sconfig.cmd especially Configure Remote Management Features of server core

  3. Use Remote Computer Management from “MMC” console of a domain joined machine to manage your server core.

Quick Uninstallation of .net 4

Quick Uninstallation of .net 4

I have been coming across a lot of clients, who provide fresh Vanilla Windows 2008, Windows 2008 R2 servers with .net 4 installed. Unfortunately this could lead to issues with MOSS and SharePoint 2010 installations.

You can use the following commands to get rid of them
.NET Framework 4 product family


Below are various options of uninstalling .net 4 from your server. Find the option that best suits you and copy the two associated lines of code and save them as a batch file. Once done execute that batch file.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
.NET Framework 4 Client Profile (32-bit) – silent repair
%windir%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\setup.exe /repair /x86 /x64 /ia64 /parameterfolder Client /q /norestart

.NET Framework 4 Client Profile (32-bit) – unattended repair

%windir%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\setup.exe /repair /x86 /x64 /ia64 /parameterfolder Client /passive/norestart

.NET Framework 4 Client Profile (32-bit) – silent uninstall

%windir%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\setup.exe /uninstall /x86 /x64 /parameterfolder Client /q /norestart

.NET Framework 4 Client Profile (32-bit) – unattended uninstall

%windir%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\setup.exe /uninstall /x86 /x64 /parameterfolder Client /passive /norestart

.NET Framework 4 Client Profile (64-bit) – silent repair

%windir%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\Client\setup.exe /repair /x86 /x64 /ia64 /parameterfolder Client /q /norestart

.NET Framework 4 Client Profile (64-bit) – unattended repair

%windir%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\Client\setup.exe /repair /x86 /x64 /ia64 /parameterfolder Client /passive /norestart

.NET Framework 4 Client Profile (64-bit) – silent uninstall

%windir%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\Client\setup.exe /uninstall /x86 /x64 /parameterfolder Client /q /norestart

.NET Framework 4 Client Profile (64-bit) – unattended uninstall

%windir%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\Client\setup.exe /uninstall /x86 /x64 /parameterfolder Client /passive /norestart

.NET Framework 4 Full (32-bit) – silent repair

%windir%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\setup.exe /repair /x86 /x64 /ia64 /parameterfolder Client /q /norestart

.NET Framework 4 Full (32-bit) – unattended repair

%windir%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\setup.exe /repair /x86 /x64 /ia64 /parameterfolder Client /passive /norestart

.NET Framework 4 Full (32-bit) – silent uninstall

%windir%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Extended\setup.exe /uninstall /x86 /x64 /ia64 /parameterfolder Extended /q /norestart

%windir%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\setup.exe /uninstall /x86 /x64 /parameterfolder Client /q /norestart

.NET Framework 4 Full (32-bit) – unattended uninstall

%windir%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Extended\setup.exe /uninstall /x86 /x64 /ia64 /parameterfolder Extended /passive /norestart

%windir%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\setup.exe /uninstall /x86 /x64 /parameterfolder Client /passive /norestart

.NET Framework 4 Full (64-bit) – silent repair

%windir%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\Client\setup.exe /repair /x86 /x64 /ia64 /parameterfolder Client /q /norestart

.NET Framework 4 Full (64-bit) – unattended repair

%windir%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\Client\setup.exe /repair /x86 /x64 /ia64 /parameterfolder Client /passive /norestart

.NET Framework 4 Full (64-bit) – silent uninstall

%windir%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\Extended\setup.exe /uninstall /x86 /x64 /ia64 /parameterfolder Extended /q /norestart

%windir%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\Client\setup.exe /uninstall /x86 /x64 /parameterfolder Client /q

.NET Framework 4 Full (64-bit) – unattended uninstall

%windir%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\Extended\setup.exe /uninstall /x86 /x64 /ia64 /parameterfolder Extended /passive /norestart

%windir%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\Client\setup.exe /uninstall /x86 /x64 /parameterfolder Client /passive /norestart