Define DynamicKeyword 'ExecTest'
Note: Don't copy&paste from following code. PowerShell SyntaxHighlighter remove some lines. Instead, use RAW view.
#Requires -Version 4.0
Set-StrictMode -Version Latest
Describe 'Unit testing the helper functions in self contained script' { | |
BeforeAll { | |
# Using AST to parse the function definitions from the self contained script. | |
# Then, save the script of the Pester test drive. | |
$FilePath = Join-Path -Path '.' -ChildPath 'ScriptWithFunction.ps1' | |
$ast = [System.Management.Automation.Language.Parser]::ParseFile($FilePath, [ref]$null, [ref]$null) | |
$functionDefinition = $ast.FindAll( { | |
param([System.Management.Automation.Language.Ast] $AstInput) | |
$AstInput -is [System.Management.Automation.Language.FunctionDefinitionAst] -and | |
# Class methods have a FunctionDefinitionAst under them as well, but we don't want them. |
function Invoke-SCCMRunScript { | |
param( | |
[Parameter(Mandatory=$true)] | |
[ValidateNotNullOrEmpty()] | |
[string]$SiteServer, | |
[Parameter(Mandatory=$true)] | |
[ValidateNotNullOrEmpty()] | |
[string]$Namespace, | |
[Parameter(Mandatory=$true)] | |
[ValidateNotNullOrEmpty()] |
############################################## | |
############## Script Info ################### | |
############################################## | |
## Created By : Dan Cook 2017 ######## | |
############################################## | |
<# | |
Version Info : | |
0.1 - 25/05/2017 - Creates a graphvis diagram and accompanying DOT code file | |
for an SCCM application dependency tree, by querying the |
Function New-WPFMessageBox { | |
# For examples for use, see my blog: | |
# https://smsagent.wordpress.com/2017/08/24/a-customisable-wpf-messagebox-for-powershell/ | |
# Define Parameters | |
[CmdletBinding()] | |
Param | |
( | |
# The popup Content |
<# | |
.NOTES | |
You'll need the excellent C# driver: http://docs.mongodb.org/ecosystem/drivers/csharp/ | |
#> | |
Add-Type -Path "c:\mongodb\bin\MongoDB.Bson.dll" | |
Add-Type -Path "c:\mongodb\bin\MongoDB.Driver.dll" | |
Function Import-CsvToMongo{ | |
param($path, $dbUrl, $collection, $matchCol) #matchCol is used as a lookup to check if entry is to be added or updated |
Function Load-ConfigMgrAssemblies { | |
Param( | |
$AdminConsoleDirectory = ($env:SMS_ADMIN_UI_PATH | Split-Path -Parent) | |
) | |
#Add-Type -Path "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\DcmObjectModel.dll" | |
$filesToLoad = "Microsoft.ConfigurationManagement.ApplicationManagement.dll","AdminUI.WqlQueryEngine.dll", "AdminUI.DcmObjectWrapper.dll","DcmObjectModel.dll","AdminUI.AppManFoundation.dll","AdminUI.WqlQueryEngine.dll","Microsoft.ConfigurationManagement.ApplicationManagement.Extender.dll","Microsoft.ConfigurationManagement.ManagementProvider.dll","Microsoft.ConfigurationManagement.ApplicationManagement.MsiInstaller.dll" | |
Set-Location $AdminConsoleDirectory | |
[System.IO.Directory]::SetCurrentDirectory($AdminConsoleDirectory) |
(irm https://raw.githubusercontent.com/git-tips/tips/master/tips.json)|sort {random}|select -First 1|% {"$($_.title)`r`n$($_.tip)" } |
$ServerThreadCode = { | |
$listener = New-Object System.Net.HttpListener | |
$listener.Prefixes.Add('http://+:8008/') | |
$listener.Start() | |
while ($listener.IsListening) { | |
$context = $listener.GetContext() # blocks until request is received | |
$request = $context.Request |