By default, script block logging data is open to anyone, not just Administrators. When script block logging is enabled, any user can access the log...
powertips
Enabling Script Block Logging
In the previous tips, we took a deep look at how PowerShell 5 script block logging works: in a nutshell, when enabled, all PowerShell code that...
Finding Secret Passwords in Memory
Some scripts may leave variables with sensitive information behind. This can happen by accident, when the global scope is used, or when users call...
Outputting Data to HTML Reports
Here is a super easy and useful PowerShell function called Out-HTML: function Out-HTML { param ( [String] $Path = "$env:temp\report$(Get-Date...
Stealing Sensitive Data from PowerShell Functions
Frequently, PowerShell functions work with sensitive information, i.e. log-on information including passwords, and store this information in...
Handling Credentials as Parameters
Credentials are objects that contain a user name and an encrypted password. If your PowerShell functions should be able to accept credentials,...
Resolving Mapped Drive
Ever wanted to know the original URL behind network drives? Here is an easy PowerShell way: # make sure the below drive is a mapped network drive #...
Downloading Data with BitsTransfer in the Background
Downloading very large files can be a challenge because the download process may take longer than a machine is turned on. With BitsTransfer, you can...
Downloading Data via SSL and BitsTransfer (Sync)
A very convenient built-in way to download files, even with SSL connections, is Start-BitsTransfer. It also sports a progress bar that shows the...
Downloading Data via SSL and Invoke-WebRequest
Invoke-WebRequest can download files for you but may struggle with HTTPS URLs. To use SSL connections, you may have to change a default setting....
Finding Disabled GPOs
Here is a quick one-liner that dumps all Group Policy objects that have all settings disabled: Get-Gpo -All | Where-Object GpoStatus -eq...
Browsing All Event Logs
Get-EventLog always requires you to specify exactly one event log via -LogName. You cannot use wildcards, and you cannot browse all event logs at...
Creating Event Log Reports
You probably have used Get-EventLog frequently to dump event log information, for example: PS> Get-EventLog -LogName System -EntryType Error...
Keyboard Shortcuts for PowerShell Console
The PowerShell console starting in version 5 ships with a module called PSReadLine which does much more than just coloring command tokens. It comes...
Using SSH from PowerShell
PowerShell 6 (PowerShell Core) finally ships with SSH support: you can use SSH to connect to non-Windows machines for PowerShell remoting...
Managing Lenovo BIOS Settings (Part 4)
In the previous tip we showed how you can read and change BIOS settings for Lenovo computers. This was the code to disable WakeOnLan, for example:...
Managing Lenovo BIOS Settings (Part 3)
In the previous tip we explained how to manage Lenovo BIOS settings from PowerShell. Typically, there are single settings that need to be managed....
Managing Lenovo BIOS Settings (Part 2)
Managing Lenovo BIOS Settings (Part 1)
There is unfortunately no standardized way of managing BIOS settings for computer vendors. Each vendor employs proprietary approaches. For Lenovo...
Exploring PowerShell Modules
Most cmdlets and functions are part of PowerShell modules. If you’d like to explore where exactly these commands come from, here is an easy...
Locking Workstation
If you’d like to lock the current workstation from within PowerShell, you can take advantage of the fact that PowerShell can run executables....
Detecting WinPE
PowerShell can run inside WinPE environments. If you’d like to detect whether your PowerShell script runs inside a WinPE environment, you can...
Extract Specific Files from ZIP Archive
Starting with PowerShell 5, cmdlets like Extract-Archive can extract the content of ZIP files to disk. However, you can always extract only the...
Dumping ZIP Archive Content
PowerShell comes with new cmdlets like Extract-Archive that can extract (all) files from a ZIP file container. However, there is no way to just list...