Removed old function folder

This commit is contained in:
Dan Franciscus
2019-05-01 10:47:02 -07:00
parent 783c3cf01b
commit bd50aba0e9
16 changed files with 364 additions and 749 deletions

View File

@@ -9,36 +9,25 @@ Function Get-ChocoPackageMetaData {
.PARAMETER ChocolateyPackage .PARAMETER ChocolateyPackage
The chocolatey package(s) you wish to extract data from The chocolatey package(s) you wish to extract data from
.PARAMETER AdditonalInformation
Return more information about the package than the default ID and Version
.EXAMPLE .EXAMPLE
Get-ChocoPackageMetaData -ChocolateyPackage C:\Packages\googlechrome.nupkg Get-ChocoPackageMetaData -ChocolateyPackage C:\Packages\googlechrome.nupkg
.EXAMPLE
Get-ChocoPackageMetaData -ChocolateyPackage C:\Packages\googlechrome.nupkg -AdditionalInformation Owners,Description,ProjectUrl,Dependencies
.NOTES .NOTES
Written by Stephen Valdinger of Chocolatey Software for Dan Franciscus Written by Stephen Valdinger of Chocolatey Software for Dan Franciscus
#> #>
[cmdletBinding()] [cmdletBinding()]
Param( Param(
[ValidateScript({Test-Path $_})] [ValidateScript({Test-Path $_})]
[String[]] [String[]]
$ChocolateyPackage, $ChocolateyPackage
[Parameter()]
[String[]]
[ValidateSet('Authors','Description','ProjectUrl','Owners','Licenseurl','Iconurl','Dependencies')]
$AdditionalInformation
) )
begin { $null = Add-Type -Assemblyname "System.IO.Compression.Filesystem" } begin { $null = Add-Type -Assemblyname "System.IO.Compression.Filesystem" }
process { process {
Foreach($package in $ChocolateyPackage){ Foreach($package in $ChocolateyPackage){
$obj = [ordered]@{} $obj = @{}
$entry = [IO.Compression.Zipfile]::OpenRead($package).Entries | $entry = [IO.Compression.Zipfile]::OpenRead($package).Entries |
Where-Object { $_.Name -match "nuspec" } Where-Object { $_.Name -match "nuspec" }
$stream = $entry.Open() $stream = $entry.Open()
@@ -47,19 +36,6 @@ Function Get-ChocoPackageMetaData {
[xml]$xml = $text [xml]$xml = $text
$obj.Add("Name","$($xml.package.metadata.id)") $obj.Add("Name","$($xml.package.metadata.id)")
$obj.Add("Version","$($xml.package.metadata.version)") $obj.Add("Version","$($xml.package.metadata.version)")
Foreach($member in $AdditionalInformation){
if($member -eq 'Dependencies'){
$obj.Add("$member",$($xml.package.metadata.dependencies.dependency | Select-Object Id,Version))
}
else{
$obj.Add("$member",$($xml.package.metadata.$($member)))
}
}
$reader.Close() $reader.Close()
$stream.Close() $stream.Close()
[pscustomobject]$obj [pscustomobject]$obj

View File

@@ -41,7 +41,7 @@ function Invoke-BoxStarterRemoteUpgrade {
} }
#Upgrade computers with Boxstarter #Upgrade computers with Boxstarter
if (!$Parallel){ if (!$Parallel){
Install-BoxstarterPackage -ComputerName $ComputerName -PackageName $ScriptPath Install-BoxstarterPackage -ComputerName $ComputerName -PackageName $ScriptPath -DelegateChocoSources
} }
else { else {
#Upgrade computers in parallel with Boxstarter #Upgrade computers in parallel with Boxstarter

View File

@@ -13,46 +13,57 @@ function Invoke-ChocoRemoteUpgrade {
param( param(
[Parameter(Mandatory=$true)] [Parameter(Mandatory=$true)]
[string[]]$ComputerName, [string[]]$ComputerName,
[pscredential]$Credential,
[string[]]$AdditionalPackages, [string[]]$AdditionalPackages,
[string[]]$ExcludedPackages, [string[]]$ExcludedPackages,
[switch]$RebootifPending [switch]$RebootifPending
) )
process { process {
Invoke-Command -ComputerName $ComputerName -ScriptBlock { #Create dynamic upgrade list
#Get list of locally installed packages to upgrade Invoke-Command -ArgumentList $AdditionalPackages,$ExcludedPackages,$ScriptPath,$Credential -ComputerName $ComputerName -ScriptBlock {
$packages = [System.Collections.ArrayList]@(choco outdated -r --ignore-unfound --ignore-pinned | Foreach-Object { param (
($_.split("|"))[0]}) $AdditionalPackages,
$ExcludedPackages,
$ScriptPath
)
$packages = [System.Collections.ArrayList]@(choco outdated -r --ignore-unfound --ignore-pinned | Foreach-Object {
($_.split("|"))[0]
})
if ($AdditionalPackages){
foreach ($AddedPackage in $AdditionalPackages){
if ($packages -notcontains $AddedPackage){
$packages.Add($AddedPackage) | Out-Null
}
}
}
if ($ExcludedPackages){
foreach ($ExcludedPackage in $ExcludedPackages){ foreach ($ExcludedPackage in $ExcludedPackages){
if ($packages -contains $ExcludedPackage){ if ($packages -contains $ExcludedPackage){
$packages.Remove($ExcludedPackage) | Out-Null $packages.Remove($ExcludedPackage) | Out-Null
} }
} }
foreach ($AddedBasePackage in $AdditionalPackage){
if ($packages -notcontains $AddedBasePackage){
$packages.Add($AddedBasePackage) | Out-Null
}
}
foreach ($package in $packages){
choco upgrade $package -r -y --timeout=600 | Out-File ("c:\Windows\Temp\choco-" + $package + ".txt")
if ($LASTEXITCODE -ne 0){
$Result = 'Failed'
}
else{
$Result = 'Success'
}
[PSCustomObject]@{
Name = $Package
Result = $Result
Computer = $Env:COMPUTERNAME
}
}
} }
#Restart machines with pending Reboot foreach ($package in $packages){
if ($RebootifPending){ choco upgrade $package -r -y --timeout=600 | Out-File ("c:\Windows\Temp\choco-" + $package + ".txt")
Test-PendingReboot -ComputerName $ComputerName -SkipConfigurationManagerClientCheck | Where-Object {$_.IsRebootpending -eq $True } | ForEach-Object { if ($LASTEXITCODE -ne 0){
Restart-Computer -ComputerName $_.ComputerName -Force $Result = 'Failed'
}
else{
$Result = 'Success'
}
[PSCustomObject]@{
Name = $Package
Result = $Result
Computer = $Env:COMPUTERNAME
} }
} }
} }
#Restart machines with pending Reboot
if ($RebootifPending){
Test-PendingReboot -ComputerName $ComputerName -SkipConfigurationManagerClientCheck | Where-Object {$_.IsRebootpending -eq $True } | ForEach-Object {
"Rebooting $($_.ComputerName)"
Restart-Computer -ComputerName $_.ComputerName -Force
}
}
}
} }

View File

@@ -25,7 +25,7 @@
process { process {
foreach ($Package in $PackageNames){ foreach ($Package in $PackageNames){
if ($TriggerPackages -contains $Package.Name){ if ($TriggerPackages -contains $Package.Name){
Write-Output "Creating scheduled task" Write-Output "Creating scheduled task for $($Package.Name)"
Disable-ScheduledTask -TaskName 'Triggered Choco Upgrade' | Unregister-ScheduledTask -Confirm:$False Disable-ScheduledTask -TaskName 'Triggered Choco Upgrade' | Unregister-ScheduledTask -Confirm:$False
$Time = New-ScheduledTaskTrigger -At $TriggeredTime -Once $Time = New-ScheduledTaskTrigger -At $TriggeredTime -Once
$PS = New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument "-file $UpgradeScriptPath" $PS = New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument "-file $UpgradeScriptPath"

View File

@@ -1,38 +0,0 @@
<#
.SYNOPSIS
Short description
.DESCRIPTION
Long description
.EXAMPLE
Example of how to use this cmdlet
.EXAMPLE
Another example of how to use this cmdlet
#>
function Get-ChocoOutdatedPackages {
[CmdletBinding()]
param(
)
Write-Verbose "Getting local outdated packages"
$OutdatedPackages = (choco outdated -r --ignore-pinned --ignore-unfound --timeout=60)
if ($LASTEXITCODE -eq 1){
Write-Verbose -Message 'Error getting outdated packages'
$OutdatedPackages
Exit
}
#If no updated packages are available then exit
if ($LASTEXITCODE -eq 0){
Write-Verbose -Message 'No new packages available. Exiting'
Exit
}
else {
# $NewPackages =
foreach ($NewPackage in $OutdatedPackages){
[PSCustomObject]@{
Name = $NewPackage.Split('|')[0]
CurrentVersion = $NewPackage.Split('|')[1]
Version = $NewPackage.Split('|')[2]
Pinned = $NewPackage.Split('|')[3]
}
}
}
}

View File

@@ -1,45 +0,0 @@
Function Get-ChocoPackageMetaData {
<#
.SYNOPSIS
Return package metadata from a given Chocolatey Package(s)
.DESCRIPTION
Reads the contents of the nupkg and extracts metadata from the nuspec contained within it
.PARAMETER ChocolateyPackage
The chocolatey package(s) you wish to extract data from
.EXAMPLE
Get-ChocoPackageMetaData -ChocolateyPackage C:\Packages\googlechrome.nupkg
.NOTES
Written by Stephen Valdinger of Chocolatey Software for Dan Franciscus
#>
[cmdletBinding()]
Param(
[ValidateScript({Test-Path $_})]
[String[]]
$ChocolateyPackage
)
begin { $null = Add-Type -Assemblyname "System.IO.Compression.Filesystem" }
process {
Foreach($package in $ChocolateyPackage){
$obj = @{}
$entry = [IO.Compression.Zipfile]::OpenRead($package).Entries |
Where-Object { $_.Name -match "nuspec" }
$stream = $entry.Open()
$reader = New-Object IO.StreamReader($stream)
$text = $reader.ReadToEnd()
[xml]$xml = $text
$obj.Add("Name","$($xml.package.metadata.id)")
$obj.Add("Version","$($xml.package.metadata.version)")
$reader.Close()
$stream.Close()
[pscustomobject]$obj
}
}
}

View File

@@ -1,52 +0,0 @@
function Invoke-BoxStarterRemoteUpgrade {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[string[]]$ComputerName,
[Parameter(Mandatory=$true)]
[pscredential]$Credential,
[string[]]$AdditionalPackages,
[string[]]$ExcludedPackages,
[Parameter(Mandatory=$true)]
[string]$ScriptPath,
[switch]$Parallel
)
#Create dynamic upgrade list
Invoke-Command -ArgumentList $AdditionalPackages,$ExcludedPackages,$ScriptPath -ComputerName $ComputerName -ScriptBlock {
param (
$AdditionalPackages,
$ExcludedPackages,
$ScriptPath
)
if (Test-Path $ScriptPath) {
Remove-Item $ScriptPath -Force
}
$packages = [System.Collections.ArrayList]@(choco outdated -r --ignore-unfound --ignore-pinned | Foreach-Object {
($_.split("|"))[0]
})
foreach ($AddedPackage in $AdditionalPackages){
if ($packages -notcontains $AddedPackage){
$packages.Add($AddedPackage) | Out-Null
}
}
foreach ($ExcludedPackage in $ExcludedPackages){
if ($packages -contains $ExcludedPackage){
$packages.Remove($ExcludedPackage) | Out-Null
}
}
$Packages | ForEach-Object {
Add-Content $ScriptPath -Value "choco upgrade $_ -r -y --timeout=600"
}
}
#Upgrade computers with Boxstarter
if (!$Parallel){
Install-BoxstarterPackage -ComputerName $ComputerName -PackageName $ScriptPath -DelegateChocoSources
}
else {
#Upgrade computers in parallel with Boxstarter
$ComputerName | ForEach-Object {
start-process -RedirectStandardOutput C:\Windows\Temp\$_.txt -FilePath powershell -ArgumentList "-windowstyle hidden Install-BoxstarterPackage -ComputerName $_ -PackageName $ScriptPath" -PassThru
}
}
}

View File

@@ -1,47 +0,0 @@
<#
.SYNOPSIS
Short description
.DESCRIPTION
Long description
.EXAMPLE
Example of how to use this cmdlet
.EXAMPLE
Another example of how to use this cmdlet
#>
function Invoke-ChocoInternalizePackage {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true,ValueFromPipeline=$True)]
[pscustomobject[]]$PackageNames,
[Parameter(Mandatory=$true)]
[string]$Path,
[switch]$PurgeWorkingDirectory
)
begin {
if ($PurgeWorkingDirectory){
Get-ChildItem -Path $Path -Recurse | Remove-Item -Recurse -Force
}
}
process {
Set-Location $Path
foreach ($Package in $PackageNames){
Write-Verbose ("Downloading " + $Package.Name)
$Date = Get-Date
choco download $Package.Name --internalize --no-progress --internalize-all-urls --source chocolatey -r | Write-Verbose
$DownloadedPackages = Get-ChildItem -Path $Path | Where-Object {$_.Extension -eq '.nupkg' -AND $_.LastWriteTime -gt $Date} | Select-Object -ExpandProperty FullName
if ($LASTEXITCODE -ne 0){
$Result = 'Internalize Failed'
}
else {
$Result = 'Internalize Success'
}
Write-Verbose ($Package.Name + ' internalize failed')
[PSCustomObject]@{
Name = $Package.Name
Result = $Result
Version = $Package.Version
NuGetpkgs = $DownloadedPackages
}
}
}
}

View File

@@ -1,69 +0,0 @@
<#
.SYNOPSIS
Short description
.DESCRIPTION
Long description
.EXAMPLE
Example of how to use this cmdlet
.EXAMPLE
Another example of how to use this cmdlet
#>
function Invoke-ChocoRemoteUpgrade {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[string[]]$ComputerName,
[pscredential]$Credential,
[string[]]$AdditionalPackages,
[string[]]$ExcludedPackages,
[switch]$RebootifPending
)
process {
#Create dynamic upgrade list
Invoke-Command -ArgumentList $AdditionalPackages,$ExcludedPackages,$ScriptPath,$Credential -ComputerName $ComputerName -ScriptBlock {
param (
$AdditionalPackages,
$ExcludedPackages,
$ScriptPath
)
$packages = [System.Collections.ArrayList]@(choco outdated -r --ignore-unfound --ignore-pinned | Foreach-Object {
($_.split("|"))[0]
})
if ($AdditionalPackages){
foreach ($AddedPackage in $AdditionalPackages){
if ($packages -notcontains $AddedPackage){
$packages.Add($AddedPackage) | Out-Null
}
}
}
if ($ExcludedPackages){
foreach ($ExcludedPackage in $ExcludedPackages){
if ($packages -contains $ExcludedPackage){
$packages.Remove($ExcludedPackage) | Out-Null
}
}
}
foreach ($package in $packages){
choco upgrade $package -r -y --timeout=600 | Out-File ("c:\Windows\Temp\choco-" + $package + ".txt")
if ($LASTEXITCODE -ne 0){
$Result = 'Failed'
}
else{
$Result = 'Success'
}
[PSCustomObject]@{
Name = $Package
Result = $Result
Computer = $Env:COMPUTERNAME
}
}
}
#Restart machines with pending Reboot
if ($RebootifPending){
Test-PendingReboot -ComputerName $ComputerName -SkipConfigurationManagerClientCheck | Where-Object {$_.IsRebootpending -eq $True } | ForEach-Object {
"Rebooting $($_.ComputerName)"
Restart-Computer -ComputerName $_.ComputerName -Force
}
}
}
}

View File

@@ -1,39 +0,0 @@
<#
.SYNOPSIS
Short description
.DESCRIPTION
Long description
.EXAMPLE
Example of how to use this cmdlet
.EXAMPLE
Another example of how to use this cmdlet
#>
function Invoke-ChocoUpgradeIntPackage {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true,ValueFromPipeline=$True)]
[pscustomobject[]]$PackageNames,
[Parameter(Mandatory=$true)]
[string]$Path
)
process {
foreach ($Package in $PackageNames){
Write-Verbose ("Upgrading " + $Package.Name)
choco upgrade $Package.Name --source $Path --no-progress -y -r | Write-Verbose
#If failure detected in output continue to next package
if ($LASTEXITCODE -ne 0){
$Result = 'Upgrade Failed'
}
else {
$Result = 'Upgrade Success'
}
Write-Verbose ($Package.Name + ' Upgrade failed')
[PSCustomObject]@{
Name = $Package.Name
Result = $Result
Version = $Package.Version
NuGetpkgs = $Package.NuGetpkgs
}
}
}
}

View File

@@ -1,45 +0,0 @@
<#
.SYNOPSIS
Short description
.DESCRIPTION
Long description
.EXAMPLE
Example of how to use this cmdlet
.EXAMPLE
Another example of how to use this cmdlet
#>
function Push-ChocoIntPackage {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true,ValueFromPipeline=$True)]
[pscustomobject[]]$PackageNames,
[Parameter(Mandatory=$true)]
[string]$Path,
[Parameter(Mandatory=$true)]
[string]$RepositoryURL,
[Parameter(Mandatory=$true)]
[ValidateNotNull()]
[System.Management.Automation.PSCredential]$ApiKey
)
process {
foreach ($Package in $PackageNames){
foreach ($NuPkg in $Package.NuGetpkgs) {
$MetaData = Get-ChocoPackageMetaData -ChocolateyPackage $NuPkg
choco push $NuPkg --force --source $RepositoryURL --api-key $ApiKey.GetNetworkCredential().Password --timeout=3600 | Write-Verbose
if ($LASTEXITCODE -ne 0){
$Result = 'Push Failed'
}
else {
$Result = 'Push Success'
}
Write-Verbose "$($MetaData.Name) push failed"
[PSCustomObject]@{
Name = $MetaData.Name
Result = $Result
Version = $MetaData.Version
NuGetPackage = $NuPkg
}
}
}
}
}

View File

@@ -1,37 +0,0 @@
<#
.SYNOPSIS
Short description
.DESCRIPTION
Long description
.EXAMPLE
Example of how to use this cmdlet
.EXAMPLE
Another example of how to use this cmdlet
#>
function Test-ChocoUpgradeTrigger {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true,ValueFromPipeline=$True)]
[pscustomobject[]]$PackageNames,
[Parameter(Mandatory=$true)]
[string[]]$TriggerPackages,
[Parameter(Mandatory=$true)]
[string]$UpgradeScriptPath,
[Parameter(Mandatory=$true)]
[string]$TriggeredTime,
[Parameter(Mandatory=$true)]
[System.Management.Automation.PSCredential]$Credential
)
process {
foreach ($Package in $PackageNames){
if ($TriggerPackages -contains $Package.Name){
Write-Output "Creating scheduled task for $($Package.Name)"
Disable-ScheduledTask -TaskName 'Triggered Choco Upgrade' | Unregister-ScheduledTask -Confirm:$False
$Time = New-ScheduledTaskTrigger -At $TriggeredTime -Once
$PS = New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument "-file $UpgradeScriptPath"
Register-ScheduledTask -User $Credential.UserName -Description 'This task is created when a certain third party software should be updated on clients' -TaskName 'Triggered Choco Upgrade' -Trigger $Time -Action $PS -Password $Credential.GetNetworkCredential().password -RunLevel Highest
Exit
}
}
}
}