TOC
Powershell (PS1) scripts, which search for exe-binaries on a Windows operation systems.
The scripts will be available as Powershell Module GetFullFilenameOf on the Powershell Gallery.
Optional: Add set the found path as environment variable for VSTS, TFS or DevOps Server build system.
All the scripts search on system folders to find the binary. For the Programfiles the scripts cover 32-bit and 64-bit. Additional can the Parameter CheckCurrentDirectory be set to $true, the the current folder will be included in the serach. Default Value is $false.
| Binary | Scripts | Variable |
|---|---|---|
| AppCert.exe | Get-FullFilenameOfAppCertExe.ps1 | FullFilenameOfAppCertExe |
| CertUtil.exe | Get-FullFilenameOfCertUtilExe.ps1 | FullFilenameOfCertUtilExe |
| CodeCoverage.exe | Get-FullFilenameOfCodeCoverageExe.ps1 | FullFilenameOfCodeCoverageExe |
| SignTool.exe | Get-FullFilenameOfSignToolExe.ps1 | FullFilenameOfSignToolExe |
Microsoft Docs: Create PS1-Module Writing Help for PowerShell Modules
New-ModuleManifest GetFullFilenameOf.psd1
Test-ModuleManifest GetFullFilenameOf.psd1
Import-Module GetFullFilenameOf.psd1Microsoft Docs: Publish PS1-Module
Publish-Module -Name "GetFullFilenameOf" -NuGetApiKey "xxxxxxxx-yyyy-yyyy-yyyy-xxxxxxxxxxxx"Pester is used to run the Powershell tests.
PluralSight 01
Types of Testing
- Unit Tests - Tests a single function or method, independent from all other tests
- Integration Tests - Test the combination of tests. Maybe some environment is needed
- Acceptance Tests - Happy Day or Edge Case Tests, can also be driven by a reported bug
Install the Test Infrastructure (PackageManagement, Pester and list the commands of pester)
$PSVersionTable
Import-Module PackageManagement
Install-Module Pester -Force
Get-Command -Module Pester
Get-Module Pester | Select Version
Get-Module Pester | Select Version -ExpandProperty Version
Get-Module Pester | Select Version | Format-Table -HideTableHeadersEnvironment variables can have the scope machine, user and process.
Set the value of an environment variable MyEnvVar on an elevated Powershell (System-wide)
[System.Environment]::SetEnvironmentVariable('MyEnvVar', 'My value with spaces', [System.EnvironmentVariableTarget]::Machine)Set the value of an environment variable MyEnvVar on an Powershell (User-scope)
[System.Environment]::SetEnvironmentVariable('MyEnvVar', 'My value with spaces', [System.EnvironmentVariableTarget]::User)Show the value of an environment variable MyEnvVar on Powershell
write-host ${Env:\MyEnvVar}Delete an environment variable MyEnvVar on an elevated Powershell (System-wide)
[System.Environment]::SetEnvironmentVariable('MyEnvVar', $null, [System.EnvironmentVariableTarget]::Machine)Delete an environment variable MyEnvVar on Powershell (User-scope)
[System.Environment]::SetEnvironmentVariable('MyEnvVar', $null, [System.EnvironmentVariableTarget]::User)Hint Be careful with SETX, it will truncate your variable value to 1024 chars! Very dangerous when manipulating e.g. %path%
Set the value of an environment variable MyEnvVar on an elevated Terminal (System-wide)
setx /M MyEnvVar "My value with spaces"Set the value of an environment variable MyEnvVar on an Terminal (User-scope)
setx MyEnvVar "My value with spaces"Show the value of an environment variable MyEnvVar on Terminal
echo %MyEnvVar%Delete an environment variable MyEnvVar on an elevated Terminal (System-wide)
reg delete "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /F /V MyEnvVarDelete an environment variable MyEnvVar on Terminal (User-scope)
reg delete "HKCU\Environment" /v MyEnvVar /fSet the value crushed tomatoes to the variable named sauce in Powershell as VSTS, TFS or Azure DevOps variable.
The parameter issecret=true mark the variable as secret.
Write-Host "##vso[task.setvariable variable=sauce]crushed tomatoes"
Write-Host "##vso[task.setvariable variable=secret.Sauce;issecret=true]crushed tomatoes"