# encoding: ascii
# api: powershell
# title: Set-AssemblyBindLogging
# description: Enable or disable assembly bind logging (per-machine)
# version: 0.1
# type: function
# license: CC0
# function: Set-AssemblyBindLogging
# x-poshcode-id: 1976
# x-archived: 2010-07-18T09:01:24
#
#
function Set-AssemblyBindLogging {
#.Synopsis
# Enable or disable Assembly Bind logging for the machine
#.Parameter EnableLogging
# Whether or not to enable logging. Accepts partial matching of Enable/Disable or True/False or even 1/0 ...
#.Parameter LogPath
# The location of the folder you want to save fusion logs to. Will be created if it does not already exist
# NOTE: If you are DISABLING logging, this folder will be DELETED (if it is empty).
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
#[ValidateSet("Enable","Disable","True","False","0","1")]
[string]$EnableLogging
,
$LogPath = "C:\Logs\Fusion"
)
foreach($RegistryRoot in "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion","HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Fusion") {
switch -regex ($EnableLogging) {
"En?a?b?l?e?|Tr?u?e?|1" {
mkdir $LogPath -Force -EA Stop
Set-ItemProperty REGISTRY::$RegistryRoot LogPath $LogPath
foreach($switch in "LogFailures","ForceLog","LogResourceBinds") {
Set-ItemProperty REGISTRY::$RegistryRoot $switch 1 -Type DWord
}
}
"Di?s?a?b?l?e?|Fa?l?s?e?|0" {
rmdir $LogPath
foreach($switch in "LogPath","LogFailures","ForceLog","LogResourceBinds") {
Remove-ItemProperty $switch
}
}
default {
throw "Couldn't convert '$EnableLogging' to a valid value. Valid values are: Enable or Disable, True or False, 1 or 0."
}
}
}
}