Archive for February, 2012

Show Cmdlets with there definitions in Powershell Titlebar

This module creates a PowerShell title bar ticker which cycles every 60 minutes, a Windows PowerShell 2 cmdlet and its definition. Great for those just starting out with Powershell to get them familiar to the new cmdlets and their definitions.
Simply import the module Cmdletdefticker.psm1 or add it to your powershell profile! You can change the cycle frequency from the default 1 hour (3600) seconds to any value you want up to 5 seconds
To import module import-module .cmdletsticker.psm1

To start the module get-cmdletdef

or add both of the above commands to your powershell profile to have it start automatically.
Calling $cmdletdef lists all of the cmdlets in the array

Thanks go to Jeffery Hicks and Boe Prox from which this module is based.

Download Button5

#requires -version 2.0

<# use import-module .cmdletsticker.psm1
and then start it by entering get-cmdletdef
change refresh interval value on line 314
#>

Function New-Timer {

<#
.Synopsis
Create an event timer object
.Description
Create an event timer object, primarily to be used by the ConsoleTitle module.
Each timer job will automatically be added to the global variable, $ConsoleTitleEvents
unless you use the -NoAdd parameter. This variable is used by Remove-Timer to clear
console title related timers.

This function is called from within other module functions but you can use it to
create non-module timers.

.Parameter Identifier
A source identifier for your timer
.Parameter Refresh
The timer interval in Seconds. The default is 300 (5 minutes). Minimum
value is 5 seconds.
.Parameter Action
The scriptblock to execute when the timer runs down.
.Parameter NoAdd
Don't add the timer object to the $ConsoleTitleEvents global variable.
#>

Param(
[Parameter(Position=0,Mandatory=$True,HelpMessage="Enter a source identifier for your timer")]
[ValidateNotNullorEmpty()]
[string]$Identifier,
[Parameter(Position=1)]
[validatescript({$_ -ge 5})]
[int]$Refresh=300,
[Parameter(Position=2,Mandatory=$True,HelpMessage="Enter an action scriptblock")]
[scriptblock]$Action,
[switch]$NoAdd
)

Write-Verbose ("Creating a timer called {0} to refresh every {1} seconds." -f $Identifier,$Refresh)

#create a timer object
$timer = new-object timers.timer
#timer interval is in milliseconds
$timer.Interval = $Refresh*1000
$timer.Enabled=$True

#create the event subscription and add to the global variable
$evt=Register-ObjectEvent -InputObject $timer -EventName elapsed –SourceIdentifier $Identifier -Action $Action

if (-Not $NoAdd) {
#add the event to a global variable to track all events
$global:ConsoleTitleEvents+=$evt
}
#start the timer
$timer.Start()

} #Function

Function Set-TimerInterval {

<#
.Synopsis
Set a new timer refresh interval
.Description
This function will change the interval property of your event timers. You can
either specify a single event subscriber name or use -All to update all timers
to the same value. The refresh interval is in seconds with a minumum value of
5.
.Parameter SourceIdentifier
A source identifier for your timer
.Parameter Refresh
The new timer interval in seconds. Minimum value is 5
.Parameter All
Update all consoletimer event subscribers to the same value
#>

[cmdletBinding(SupportsShouldProcess=$True,DefaultParameterSetName="default")]

Param (
[Parameter(Position=0,HelpMessage="Enter the sourceidentifier of an event subscriber",ParameterSetName="Default")]
[string]$SourceIdentifier,
[Parameter(Mandatory=$True,HelpMessage="Enter the new refresh interval in seconds")]
[ValidateScript({$_ -ge 5})]
[int]$Refresh,
[Parameter(ParameterSetName="All")]
[switch]$All
)

if ($all) {
$sourceIdentifier=$global:ConsoleTitleEvents | Where {$_.state -eq "Running"} | Select-Object -ExpandProperty Name -Unique
}

if (-Not $SourceIdentifier) {
Write-Error "No value specified for SourceIdentifier"
}
else {
$sourceidentifier | foreach {
Get-EventSubscriber -SourceIdentifier $_ | ForEach {
Write-Verbose $_.SourceIdentifier
if ($psCmdlet.ShouldProcess("$($_.SourceIdentifier) to $Refresh")) {
$_.sourceobject.Interval=($Refresh*1000)
} #should process
} #foreach event subscriber
} #foreach source id
}

} #function

Function Get-Timer {

<#
.Synopsis
Get console timer objects
.Description
Get all event subscribers created for updating the console window title.
#>

Param()

if ($global:ConsoleTitleEvents) {
$global:ConsoleTitleEvents | Where {$_.state -match "Running|NotStarted"} | select name -unique | foreach {
get-eventsubscriber -source $_.name | Select SourceIdentifier,@{Name="Refresh";Expression={
$_.SourceObject.Interval/1000}}, @{Name="Enabled";Expression={$_.SourceObject.Enabled}},
@{Name="Action";Expression={$_.Action.Command}}
}
}

} #function

Function Remove-Timer {

<#
.Synopsis
Remove timer event subscriptions
.Description
This function will remove all console title related timer event subscriptions.
.Parameter Events
The events to remove. This defaults to the global variable $ConsoleTitleEvents

#>

[cmdletBinding(SupportsShouldProcess=$True)]

Param(
[Parameter(Position=0)]
[ValidateNotNullorEmpty()]
$Events=$global:ConsoleTitleEvents)

if ($events -is [string]) {
Get-EventSubscriber -SourceIdentifier $events | foreach {
$_ | Unregister-Event
get-job -Name $_.SourceIdentifier | Remove-Job
}
}
else {
#there might be old and new events for the same name, so just get the names
$events | Select -Property Name -Unique | foreach { Get-EventSubscriber -SourceIdentifier $_.name} |
foreach {

$_| Unregister-Event
get-job -Name $_.SourceIdentifier | Remove-Job
}

}
} #Function

Function Start-TitleTimer {

<#
.Synopsis
Create a timer to update the console window title
.Description
This function will update the console window title and create a new event
timer that will update the title at the end of the refresh period. This event
will continue until you remove it or end your PowerShell session.
.Parameter Title
The text to set for the console window title. The default is the value of the
global variable $PSConsoleTitle
.Parameter Refresh
The timer interval in Seconds. The default is 300 (5 minutes). Minimum
value is 5 seconds.
#>

Param(
[Parameter(Position=0)]
[string]$Title=$global:PSConsoleTitle,
[Parameter(Position=1)]
[ValidateScript({$_ -ge 5})]
[int]$Refresh=300
)

Write-Verbose "Creating timer event to update console title every $Refresh seconds"
#create a timer action
$Actionsb= {$host.ui.RawUI.WindowTitle=$Global:PSConsoleTitle}

#invoke the scriptblock to set the title now
Write-Verbose ("{0} Setting window title to {1}. " -f (Get-Date),$Global:PSConsoleTitle)
Invoke-Command -ScriptBlock $ActionSB

#create a timer object
New-Timer -Identifier "TitleTimer" -Refresh $Refresh -Action $ActionSB

} #function

Function Get-SystemStat {

<#
.Synopsis
Set console window title with system information
.Description
This is a sample command to update the console title bar with system
information gathered from WMI. This is a sample:

CLIENT01 CPU:18% FreeMem:931MB Procs:118 Free C:10.57% ▲5.05:23:22

The function will create the necessary background timer.
.Parameter Refresh
The timer interval in Seconds. The default is 300 (5 minutes). Minimum
value is 5 seconds.

#>

Param(
[Parameter(Position=0)]
[ValidateScript({$_ -ge 5})]
[int]$Refresh=300
)

#create a scriptblock
$sb={
#Gather some stats
$cdrive=Get-WMIObject -query "Select Freespace,Size from win32_logicaldisk where deviceid='c:'"
[int]$freeMem=(Get-Wmiobject -query "Select FreeAndZeroPageListBytes from Win32_PerfFormattedData_PerfOS_Memory").FreeAndZeroPageListBytes/1mb
$cpu=Get-WMIObject -class win32_processor -Property loadpercentage
$pcount=(Get-Process).Count
$diskinfo="{0:N2}" -f (($cdrive.freespace/1gb)/($cdrive.size/1gb)*100)
#get uptime
$OS=Get-WmiObject -class Win32_OperatingSystem
$Uptime=(Get-Date) - $OS.ConvertToDateTime($OS.Lastbootuptime)
#parse out milliseconds from uptime
$up=$uptime.tostring().Substring(0,$uptime.ToString().LastIndexOf("."))
[string]$text="{5} CPU:{0}% FreeMem:{6}MB Procs:{1} Free C:{2}% {3}{4}" -f $cpu.LoadPercentage,$pcount,$diskinfo,([char]0x25b2),$up,$env:computername,$FreeMem

Write-verbose $text
$global:PSConsoleTitle=$Text
}

Write-Verbose "Creating timer event to get system stats every $refresh seconds"

#invoke the scriptblock to set the title now
Invoke-Command -ScriptBlock $sb

New-Timer -identifier "SystemStatTimer" -action $sb -refresh $refresh

} #end Function

Function Set-ConsoleTitle {

<#
.Synopsis
Set the console window title
.Description
This function immediately sets the console window title bar. The
default value is $PSConsoleTitle.
.Parameter Title
The new value for the console window title bar.

#>

[cmdletbinding(SupportsShouldProcess=$True)]

Param(
[Parameter(Position=0)]
[ValidateNotNullorEmpty()]
[string]$Title=$global:PSConsoleTitle
)

if ($pscmdlet.shouldprocess($Title)) {
$host.ui.RawUI.WindowTitle=$Title
}

} #function

Function Get-cmdletdef {

<#
.Synopsis
Set console window title with a quote or message
.Description
This is a sample command to update the console title bar with a random
powershell cmdlet and its definition taken from an array of strings, stored in the global
variably $cmdletdef. This array is pre-defined but you can modife the value
of $cmdletdef from your PowerShell session anytime you want.

If there is no title timer object, this command will create it.

.Parameter Refresh
The timer interval in seconds. The default is 3600 (60 minutes). Minimum
value is 5 seconds.

#>

Param(
[Parameter(Position=0)]
[ValidateScript({$_ -ge 5})]
[int]$Refresh=3600
)

#Define an array of powershell commands and cmdlets including active directory cmdlets to display

#we'll create as a globally scoped variable so you can add to it anytime you want from PowerShell
$global:cmdletdef=@(
"Get-Acl - Get permission settings for a file or registry key",
"Get-AuthenticodeSignature - Get the signature object associated with a file",
"Set-Acl - Set permissions",
"Get-Alias - gal Return alias names for Cmdlets",
"Import-Alias - ipal Import an alias list from a file",
"New-Alias - nal Create a new alias.",
"Set-Alias - sal Create or change an alias",
"Set-AuthenticodeSignature - Place a signature in a .ps1 script or other file",
"Set-Location - cd/chdir/sl Set the current working location",
"Get-ChildItem - dir/ls/gci Get child items (contents of a folder or registry key)",
"Clear-Host - clear/cls Clear the screen",
"Clear-Item - cli Remove content from a variable or an alias",
"Get-Command - gcm - Retrieve basic information about a command",
"Measure-Command - Measure running time",
"Trace-Command - Trace an expression or command",
"Add-Computer - Add a computer to the domain",
"Checkpoint-Computer - Create a system restore point (XP)",
"Remove-Computer - Remove the local computer from a workgroup or domain",
"Restart-Computer - Restart the operating system on a computer",
"Restore-Computer - Restore the computer to a previous state",
"Stop-Computer - Stop (shut down) a computer",
"Reset-ComputerMachinePassword - Reset the machine account password for the computer",
"Test-ComputerSecureChannel - Test and repair the secure channel to the domain",
"Add-Content - ac - Add to the content of the item",
"Get-Content - cat/type/gc - Get content from item (specific location)",
"Set-Content - sc - Set content in the item (specific location)",
"Clear-Content - clc - Remove content from a file/item",
"Get-Command - gcm - Get basic information about cmdlets",
"Invoke-Command - icm - Run command",
"Enable-ComputerRestore - Enable System Restore on a drive",
"Disable-ComputerRestore - Disable System Restore on a drive",
"Get-ComputerRestorePoint - Get the restore points on the local computer",
"Test-Connection - Ping one or more computers",
"ConvertFrom-CSV - Convert object properties (in CSV format) into CSV objects",
"ConvertTo-CSV - Convert .NET Framework objects into CSV variable-length strings",
"ConvertTo-Html - Convert the input into an HTML table",
"ConvertTo-Xml - Convert the input into XML",
"ConvertFrom-SecureString - Convert a secure string into an encrypted standard string",
"ConvertTo-SecureString - Convert an encrypted standard string into a secure string",
"Copy-Item - copy/cp/ci - Copy an item from a namespace location",
"Export-Counter - Export Performance Counter data to log files",
"Get-Counter - Get performance counter data",
"Import-Counter - Import performance counter log files",
"Get-Credential - Get a security credential (username/password)",
"Get-Culture - Get region information (language and keyboard layout)",
"Get-ChildItem - Dir/ls/gci - Get child items (contents of a folder or registry key)",
"Get-Date - Get current date and time",
"Set-Date - Set system time on the host system",
"Remove-Item - Del/erase/rd/rm/rmdir - Delete an item",
"Compare-Object - diff/compare - Compare the properties of objects",
"Do - Loop while a condition is True",
"Get-Event - Get events in the event queueGet-Content - cat/type/gc - Get content from item (specific location)",
"Set-Content - sc - Set content in the item (specific location)",
"Clear-Content - clc - Remove content from a file/item",
"Get-Command - gcm - Get basic information about cmdlets",
"Invoke-Command - icm - Run command",
"Enable-ComputerRestore - Enable System Restore on a drive",
"Disable-ComputerRestore - Disable System Restore on a drive",
"Get-ComputerRestorePoint - Get the restore points on the local computer",
"Test-Connection - Ping one or more computers",
"ConvertFrom-CSV - Convert object properties (in CSV format) into CSV objects",
"ConvertTo-CSV - Convert .NET Framework objects into CSV variable-length strings",
"ConvertTo-Html - Convert the input into an HTML table",
"ConvertTo-Xml - Convert the input into XML",
"ConvertFrom-SecureString - Convert a secure string into an encrypted standard string",
"ConvertTo-SecureString - Convert an encrypted standard string into a secure string",
"Copy-Item - copy/cp/ci - Copy an item from a namespace location",
"Export-Counter - Export Performance Counter data to log files",
"Get-Counter - Get performance counter data",
"Import-Counter - Import performance counter log files",
"Get-Credential - Get a security credential (username/password)",
"Get-Culture - Get region information (language and keyboard layout)",
"Get-ChildItem - Dir/ls/gci - Get child items (contents of a folder or registry key)",
"Get-Date - Get current date and time",
"Set-Date - Set system time on the host system",
"Remove-Item - Del/erase/rd/rm/rmdir - Delete an item",
"Compare-Object - diff/compare - Compare the properties of objects",
"Do - Loop while a condition is True",
"Get-Event - Get events in the event queue",
"Get-WinEvent - Get events from event logs and event trace logs",
"New-Event - Create a new event",
"Remove-Event - Delete events from the event queue",
"Unregister-Event - Cancel an event subscription",
"Wait-Event - Wait until a particular event is raised",
"Clear-EventLog - Delete all entries from an event log",
"Get-Eventlog - Get event log data",
"Limit-EventLog - Limit the size of the event log",
"New-Eventlog - Create a new event log and a new event source",
"Remove-EventLog - Delete an event log",
"Show-EventLog - Display an event log",
"Write-EventLog - Write an event to an event log",
"Get-EventSubscriber - Get event subscribers",
"egister-EngineEvent - Subscribe to powershell events",
"Register-ObjectEvent - Subscribe to .NET events",
"Register-WmiEvent - Subscribe to a WMI event",
"Get-ExecutionPolicy - Get the execution policy for the shell",
"Set-ExecutionPolicy - Change the execution policy (user preference)",
"Export-Alias - epal - Export an alias list to a file",
"Export-Clixml - Produce a clixml representation of powershell objects",
"Export-Console - Export console configuration to a file",
"Export-Csv - epcsv - Export to Comma Separated Values (spreadsheet)",
"Exit - Exit Powershell (or exit a script)",
"ForEach-Object - foreach - Loop for each object in the pipeline ( % )",
"ForEach - Loop through values in the pipeline",
"For - Loop through items that match a condition",
"Format-Custom - fc - Format output using a customized view",
"Format-List - fl - Format output as a list of properties, each on a new line",
"Format-Table - ft - Format output as a table",
"Format-Wide - fw - Format output as a table listing one property only",
"Export-FormatData - Save formatting data from the current session",
"Get-FormatData - Get the formatting data in the current session",
"Get-Item - gi Get a file/registry object (or any other namespace object)",
"Get-ChildItem - dir/ls/gci Get child items (contents of a folder or registry key)",
"Get-Help - help - Open the help file",
"Add-History - Add entries to the session history",
"Clear-History - clhy Delete entries from the session history",
"Get-History - history/h/ghy - Get a listing of the session history",
"Invoke-History - r/ihy - Invoke a previously executed Cmdlet",
"Get-Host - Get host information (PowerShell Version and Region)",
"Clear-Host - clear/cls - Clear the screen",
"Read-Host - Read a line of input from the host console",
"Write-Host - Write customized output to the host/screen",
"Get-HotFix - Get Installed hotfixes",
"if - Conditionally perform a command",
"Import-Clixml - Import a clixml file and rebuild the PS object",
"Import-Csv - ipcsv - Take values from a CSV list and send objects down the pipeline",
"Invoke-Command - Run commands on local and remote computers",
"Invoke-Expression - iex - Run a PowerShell expression",
"Get-Item - gi - Get a file object or get a registry (or other namespace) object",
"Invoke-Item - ii - Invoke an executable or open a file (START)",
"New-Item - ni - Create a new item in a namespace",
"Remove-Item - rm/del/erase/rd/ri/rmdir - Remove an item",
"Set-Item - si - Change the value of an item",
"Clear-ItemProperty - clp - Remove the property value from a property",
"Copy-ItemProperty - cpp - Copy a property along with it's value",
"Get-ItemProperty - gp - Retrieve the properties of an object",
"Move-ItemProperty - mp - Move a property from one location to another",
"New-ItemProperty - Set a new property",
"Remove-ItemProperty - rp - Remove a property and its value",
"Rename-ItemProperty - rnp - Renames a property at its location",
"Set-ItemProperty - sp - Set a property at the specified location to a specified value",
"Get-Job - gjb - Get PowerShell background jobs that are running",
"Receive-Job - rcjb - Get PowerShell background job results",
"Remove-Job - rjb - Delete a PowerShell background job",
"Start-Job - sajb - Start a PowerShell background job",
"Stop-Job - spjb - Stop a PowerShell background job",
"Wait-Job - wjb - Wait for a background job",
"Stop-Process - kill/spps - Stop a running process",
"Update-List - Add and remove items from a collection",
"Get-Location - pwd / gl - Get and display the current location",
"Pop-Location - popd - Set the current working location from the stack",
"Push-Location - pushd - Push a location to the stack",
"Set-Location - cd/chdir/sl - Set the current working location",
"Send-MailMessage - Send an email message",
"Add-Member - Add a member to an instance of a PowerShell object",
"Get-Member - gm - Enumerate the properties of an object",
"Get-Module - gmo - Get the modules imported to the session",
"Import-Module - ipmo - Add a module to the session",
"New-Module - nmo - Create a new dynamic module (only in memory)",
"Remove-Module - rmo - Remove a module from the current session",
"Move-Item - mv/move/mi - Move an item from one location to another",
"Compare-Object - diff/compare - Compare the properties of objects",
"Group-Object - group - Group objects that contain the same value",
"Measure-Object - Measure the properties of an object",
"New-Object - Create a new .Net object",
"Select-Object - select - Select properties of objects",
"Sort-Object - sort - Sort objects by property value",
"Where-Object - Filter the objects passed along the command pipeline",
"Out-Default - Send output to default",
"Out-File - Send output to a file",
"Out-GridView - ogv - Send output to an interactive table",
"Out-Host - oh - Send output to the host",
"Out-Null - Send output to null",
"Out-Printer - lp - Send the output to a printer",
"Out-String - Send objects to the host as strings",
"Convert-Path - cvpa - Convert a ps path to a provider path",
"Join-Path - Combine a path and child-path",
"Resolve-Path - rvpa - Resolves the wildcards in a path",
"Split-Path - Return part of a path",
"Test-Path - Return true if the path exists, otherwise return false",
"Get-Pfxcertificate - Get pfx certificate information",
"Pop-Location - popd - Set the current working location from the stack",
"Push-Location - pushd - Push a location to the stack",
"Get-Process - ps/gps - Get a list of processes on a machine",
"Debug-Process - Attach a debugger to a running process",
"Start-Process - start/saps - Start one or more processes",
"Stop-Process - kill/spps - Stop a running process",
"Wait-Process - Wait for a process to stop",
"Enable-PSBreakpoint - ebp - Enable a breakpoint in the current console",
"Disable-PSBreakpoint - dbp - Disable a breakpoint in the current console",
"Get-PSBreakpoint - gbp - Get the currently set breakpoints",
"Set-PSBreakpoint - sbp - Set a breakpoint on a line, command, or variable",
"Remove-PSBreakpoint - rbp - Delete breakpoints from the current console",
"Get-PSDrive - gdr - Get drive information (DriveInfo)",
"New-PSDrive - mount/ndr - Install a new drive on the machine",
"Remove-PSDrive - rdr - Remove a provider/drive from its location",
"Get-PSProvider - Get information for the specified provider",
"Set-PSdebug - Turn script debugging on or off",
"Enter-PSSession - etsn - Start an interactive session with a remote computer",
"Exit-PSSession - exsn - End an interactive session with a remote computer",
"Export-PSSession - epsn - Import commands and save them in a PowerShell module",
"Get-PSSession - gsn - Get the PSSessions in the current session",
"Import-PSSession - ipsn - Import commands from another session",
"New-PSSession - nsn - Create a persistent connection to a local or remote computer",
"Remove-PSSession - rsn - Close PowerShell sessions",
"Disable-PSSessionConfiguration - Deny access to PS session configuration",
"Enable-PSSessionConfiguration - Enable PS session configuration",
"Get-PSSessionConfiguration - Get the registered PS session configuration",
"Register-PSSessionConfiguration - Create and register a new PS session configuration",
"Set-PSSessionConfiguration - Change properties of a registered session configuration",
"Unregister-PSSessionConfiguration - Delete registered PS session configuration",
"New-PSSessionOption - Advanced options for a PSSession",
"Add-PsSnapIn - asnp - Add snap-ins to the console",
"Get-PsSnapin - gsnp - List PowerShell snap-ins on this computer",
"Remove-PSSnapin - rsnp - Remove PowerShell snap-ins from the console",
"Get-Random - Get a random number",
"Read-Host - Read a line of input from the host console",
"Remove-Item - rm/del/erase/rd/ri/rmdir - Remove an item",
"Rename-Item - ren/rni - Change the name of an existing item",
"Rename-ItemProperty - Rename a property of an item",
"Run/Call - & - Run a command (call operator)",
"Select-Object - select - Select properties of objects",
"Select-XML - Find text in an XML string or document",
"Send-MailMessage - Send an email message",
"Get-Service - gsv - Get a list of services",
"New-Service - Create a new service",
"Restart-Service - Stop and then restart a service",
"Resume-Service - Resume a suspended service",
"Set-Service - Change the start mode/properties of a service",
"Start-Service - sasv - Start a stopped service",
"Stop-Service - spsv - Stop a running service",
"Suspend-Service - Suspend a running service",
"Sort-Object - sort Sort objects by property value",
"Set-StrictMode - Enforce coding rules in expressions & scripts",
"Start-Sleep - sleep - Suspend shell, script, or runspace activity",
"Switch - Multiple if statements",
"ConvertFrom-StringData - Convert a here-string into a hash table",
"Select-String - Search through strings or files for patterns",
"Tee-Object - tee - Send input objects to two places",
"New-Timespan - Create a timespan object",
"Trace-Command - Trace an expression or command",
"Get-Tracesource - Get components that are instrumented for tracing",
"Set-Tracesource - Trace a PowerShell component",
"Start-Transaction - Start a new transaction",
"Complete-Transaction - Commit the transaction",
"Get-Transaction - Get information about the active transaction",
"Use-Transaction - Add a command or expression to the transaction",
"Undo-Transaction - Roll back a transaction",
"Start-Transcript - Start a transcript of a command shell session",
"Stop-Transcript - Stop the transcription process",
"Add-Type - Add a .NET Framework type to a PowerShell session",
"Update-TypeData - Update extended type configuration",
"Get-Uiculture - Get the ui culture information",
"Get-Unique - gu Get the unique items in a collection",
"Update-Formatdata - Update and append format data files",
"Update-Typedata - Update the current extended type configuration",
"Clear-Variable - clv - Remove the value from a variable",
"Get-Variable - gv - Get a powershell variable",
"New-Variable - nv - Create a new variable",
"Remove-Variable - rv - Remove a variable and its value",
"Set-Variable - set/sv - Set a variable and a value",
"New-WebServiceProxy - Create a Web service proxy object",
"Where-Object - where/? - Filter input from the pipeline",
"Where - Filter objects from the pipeline",
"While - Loop while a condition is True",
"Write-Debug - Write a debug message to the host display",
"Write-Error - Write an object to the error pipeline",
"Write-Host - Write customized output to the host/screen",
"Write-Output - write/echo - Write an object to the pipeline",
"Write-Progress - Display a progress bar",
"Write-Verbose - Write a string to the host's verbose display",
"Write-Warning - Write a warning message",
"Set-WmiInstance - Create or update an instance of an existing WMI class",
"Invoke-WmiMethod - iwmi Call WMI methods",
"Get-WmiObject - gwmi Get WMI class information",
"Remove-WmiObject - rwmi Delete an instance of a WMI class",
"Connect-WSMan - Connect to the WinRM service on a remote computer",
"Disconnect-WSMan - Disconnect from the WinRM service on a remote computer",
"Test-WSMan - Test whether the WinRM service is running",
"Invoke-WSManAction - Invoke an action on a specified object",
"Disable-WSManCredSSP - Disable Credential Security Service Provider (SSP) authentication",
"Enable-WSManCredSSP - Enable Credential SSP authentication",
"Get-WSManCredSSP - Get the Credential SSP configuration",
"New-WSManInstance - Create a new instance of a management resource",
"Get-WSManInstance - Display management information (XML or value)",
"Set-WSManInstance - Modify the management information related to a resource",
"Remove-WSManInstance - Delete a management resource instance",
"Set-WSManQuickConfig - Configure the local computer for remote management",
"New-WSManSessionOption - Options for WSMan commands",
"Disable-adAccount Disable an Active Directory account",
"Enable-adAccount Enable an Active Directory account",
"Search-adAccount Get AD user, computer, and service accounts",
"Unlock-adAccount Unlock an AD account",
"Get-adAccountAuthorizationGroup Get the groups in which an account is a direct or indirect member",
"Set-adAccountControl Modify user account control (UAC) values for an AD account",
"Clear-adAccountExpiration Clear the expiration date for an AD account",
"Set-adAccountExpiration Set the expiration date for an AD account",
"Set-adAccountPassword Modify the password of an AD account",
"Get-adAccountResultantPasswordReplicationPolicy Resultant password replication policy for an AD account",
"Get-adComputer Get one or more AD computers",
"New-adComputer Create a new AD computer",
"Remove-adComputer Remove an AD computer",
"Set-adComputer Modify an AD computer",
"Add-adComputerServiceAccount Add one or more service accounts to an AD computer",
"Get-adComputerServiceAccount Get the service accounts that are hosted by an AD computer",
"Remove-adComputerServiceAccount Remove one or more service accounts from a computer",
"Get-adDefaultDomainPasswordPolicy Get the default password policy for an AD domain",
"Set-adDefaultDomainPasswordPolicy Modify the default password policy for an AD domain",
"Move-adDirectoryServer Move a domain controller in AD DS to a new site",
"Move-adDirectoryServerOperationMasterRole Move the operation master (FSMO) roles to an AD domain controller",
"Get-adDomain Get an AD domain",
"Set-adDomain Modify an AD domain",
"Get-adDomainController Get one or more AD domain controllers",
"Add-adDomainControllerPasswordReplicationPolicy - Add users, computers, and groups to the Allowed List or the Denied List of the read-only domain controller",
"Get-adDomainControllerPasswordReplicationPolicy RODC PRP Allowed/Denied List",
"Remove-adDomainControllerPasswordReplicationPolicy RODC PRP Allowed/Denied List",
"Get-adDomainControllerPasswordReplicationPolicyUsage Get the resultant password policy of the specified AD Account on the specified RODC",
"Set-adDomainMode Set the domain functional level for an AD domain",
"Get-adFineGrainedPasswordPolicy Get one or more AD fine-grained password policies",
"New-adFineGrainedPasswordPolicy Create a new AD fine-grained policy",
"Remove-adFineGrainedPasswordPolicy Remove an AD fine-grained password policy",
"Set-adFineGrainedPasswordPolicy Modify an AD fine-grained password policy",
"Add-adFineGrainedPasswordPolicySubject Apply a fine-grained password policy to one more users and groups",
"Get-adFineGrainedPasswordPolicySubject Get the users and groups to which a fine-grained policy is applied",
"Remove-adFineGrainedPasswordPolicySubject Remove one or more users from a fine-grained policy",
"Get-adForest Get an AD forest",
"Set-adForest Modify an AD forest",
"Set-adForestMode Set the forest mode for an AD forest",
"Get-adGroup Get one or more AD groups",
"New-adGroup Create an AD group",
"Remove-adGroup Remove an AD group",
"Set-adGroup Modify an AD group",
"Add-adGroupMember Add one or more members to an AD group",
"Get-adGroupMember Get the members of an AD group",
"Remove-adGroupMember Remove one or more members from an AD group",
"Get-adObject Get one or more AD objects",
"Move-adObject Move an AD object or a container of objects to a different container or domain",
"New-adObject Create an AD object",
"Remove-adObject Remove an AD object",
"Rename-adObject Change the name of an AD object",
"Restore-adObject Restore an AD object",
"Set-adObject Modify an AD object",
"Disable-adOptionalFeature Disable an AD optional feature",
"Enable-adOptionalFeature Enable an AD optional feature",
"Get-adOptionalFeature Get one or more AD optional features",
"Get-adOrganizationalUnit Get one or more AD OUs",
"New-adOrganizationalUnit Create a new AD OU",
"Remove-adOrganizationalUnit Remove an AD OU",
"Set-adOrganizationalUnit Modify an AD OU",
"Add-adPrincipalGroupMembership Add a member to one or more AD groups",
"Get-adPrincipalGroupMembership Get the AD groups that have a specified user, computer, or group",
"Remove-adPrincipalGroupMembership Remove a member from one or more AD groups",
"Get-adRootDSE Get the root of a domain controller information tree",
"Get-adServiceAccount Get one or more AD service accounts",
"Install-adServiceAccount Install an AD service account on a computer",
"New-adServiceAccount Create a new AD service account",
"Remove-adServiceAccount Remove an AD service account",
"Set-adServiceAccount Modify an AD service account",
"Uninstall-adServiceAccount UnInstall an AD service account from a computer",
"Reset-adServiceAccountPassword Reset the service account password for a computer",
"Get-adUser Get one or more AD users",
"New-adUser Create a new AD user",
"Remove-adUser Remove an AD user",
"Set-adUser Modify an AD user",
"Get-adUserResultantPasswordPolicy",
"# - Comment / Remark",
". (source) - Run a command script in the current shell",
"& (call) - Run a command script",
"? - Alias for Where-Object"
)

$sb={ $global:PSConsoleTitle=$global:cmdletdef | get-random }
#invoke the scriptblock
Invoke-Command $sb

New-Timer -identifier "SloganUpdate" -action $sb -refresh $refresh

#start the update timer if not already running
if (-Not (Get-EventSubscriber -SourceIdentifier "TitleTimer" -ea "SilentlyContinue")) {
Start-TitleTimer -refresh $refresh
}

} #function

#=================================================================

#Set a global variable for the console title
$Global:PSConsoleTitle="PowerShell Windows 2.0"
$Global:ConsoleTitleEvents=@()

Export-ModuleMember -Function * -Variable PSConsoleTitle,cmdletdef,ConsoleTitleEvents
2012/02/23 | By | Reply More

Hard drive report to pretty html file

This script will get a list of computers and output the hard drive information to a pretty html file. You can also just specify the computer(s) on the command line by entering it  like below

‘.hard drive report to html.ps1’ computer1,computer2,computer3

or use a list of computers jut change file path and name on line 7 to reflect name and path of computer list file using.

Your browser will open with a report that looks similar to below when the script completes.

The file drivereport.htm file will be saved to same location as script.

Download Button5

#requires -version 2.0
#use parameter drive report to html.ps1 computer1,computer2 or a computer list file
#change file path and name of list below to reflect name and path of computer list file using.
#script will open web browser with current report when completed.

Param (
$computers = (Get-Content "C:ScriptsComputers.txt")
)

$Title="Hard Drive Report to HTML"

#embed a stylesheet in the html header
$head = @"
<style>
body { background-color:#FFFFCC;
font-family:Tahoma;
font-size:12pt; }
td, th { border:1px solid #000033;
border-collapse:collapse; }
th { color:white;
background-color:#000033; }
table, tr, td, th { padding: 0px; margin: 0px }
table { margin-left:10px; }
</style>
<Title>$Title</Title>
<br>
"@

#define an array for html fragments
$fragments=@()

#get the drive data
$data=Get-WmiObject -Class Win32_logicaldisk -filter "drivetype=3" -computer $computers

#group data by computername
$groups=$Data | Group-Object -Property SystemName

#this is the graph character
[string]$g=[char]9608

#create html fragments for each computer
#iterate through each group object

ForEach ($computer in $groups) {

$fragments+="<H2>$($computer.Name)</H2>"

#define a collection of drives from the group object
$Drives=$computer.group

#create an html fragment
$html=$drives | Select @{Name="Drive";Expression={$_.DeviceID}},
@{Name="SizeGB";Expression={$_.Size/1GB -as [int]}},
@{Name="UsedGB";Expression={"{0:N2}" -f (($_.Size - $_.Freespace)/1GB) }},
@{Name="FreeGB";Expression={"{0:N2}" -f ($_.FreeSpace/1GB) }},
@{Name="Usage";Expression={
$UsedPer= (($_.Size - $_.Freespace)/$_.Size)*100
$UsedGraph=$g * ($UsedPer/2)
$FreeGraph=$g* ((100-$UsedPer)/2)
#I'm using place holders for the < and > characters
"xopenFont color=Redxclose{0}xopen/FontxclosexopenFont Color=Greenxclose{1}xopen/fontxclose" -f $usedGraph,$FreeGraph
}} | ConvertTo-Html -Fragment

#replace the tag place holders. It is a hack but it works.
$html=$html -replace "xopen","<"
$html=$html -replace "xclose",">"

#add to fragments
$Fragments+=$html

#insert a return between each computer
$fragments+="<br>"

} #foreach computer

#add a footer
$footer=("<br><I>Report run {0} by {1}{2}<I>" -f (Get-Date -displayhint date),$env:userdomain,$env:username)
$fragments+=$footer

#write the result to a file
ConvertTo-Html -head $head -body $fragments | Out-File drivereport.htm

.drivereport.htm

												
2012/02/18 | By | Reply More