powershell_cheat_sheet
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
powershell_cheat_sheet [2019/09/11 22:49] – stephen | powershell_cheat_sheet [2021/04/13 21:53] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Powershell Cheat Sheet ====== | ====== Powershell Cheat Sheet ====== | ||
+ | |||
+ | ===== File exists check ===== | ||
+ | |||
+ | <code powershell> | ||
+ | if (Test-Path $path) { | ||
+ | Write-Host "File exists." | ||
+ | } | ||
+ | if (!(Test-Path $path)) { | ||
+ | Write-Host "File does not exist." | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Check previous command was successful ===== | ||
+ | |||
+ | <code powershell> | ||
+ | if ($?) { | ||
+ | Write-Host ' | ||
+ | } else { | ||
+ | Write-Host ' | ||
+ | throw ' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Searching in files ===== | ||
+ | |||
+ | <code powershell> | ||
+ | Get-ChildItem -Recurse -Path C:\Temp -Include *.txt | Select-String ' | ||
+ | </ | ||
+ | |||
+ | ===== Search and replace in a file ===== | ||
+ | |||
+ | <code powershell> | ||
+ | (Get-Content $filename) -replace ' | ||
+ | </ | ||
+ | |||
+ | ===== Create a timestamp ===== | ||
+ | |||
+ | <code powershell> | ||
+ | $timestamp = (Get-Date).ToString(" | ||
+ | </ | ||
+ | |||
+ | ===== Parameters ===== | ||
+ | |||
+ | <code powershell> | ||
+ | param ( | ||
+ | [parameter(Mandatory=$true, | ||
+ | [parameter(Mandatory=$true)] [string]$targetWebConfig, | ||
+ | [parameter(Mandatory=$false)] [string]$build = ' | ||
+ | ) | ||
+ | </ | ||
+ | |||
+ | ===== Set current directory to script location ===== | ||
+ | |||
+ | <code powershell> | ||
+ | Push-Location " | ||
+ | #... | ||
+ | Pop-Location | ||
+ | </ | ||
+ | |||
+ | ===== Certificates ===== | ||
+ | |||
+ | Search by thumbprint: | ||
+ | |||
+ | <code powershell> | ||
+ | Get-ChildItem -Path Cert: -Recurse | Where-Object { $_.Thumbprint -and $_.Thumbprint.ToLower().StartsWith(' | ||
+ | </ | ||
+ | |||
+ | To check if the cert is valid, pipe it the '' | ||
+ | |||
+ | <code powershell> | ||
+ | Get-ChildItem -Path Cert: -Recurse | Where-Object { $_.Thumbprint -and $_.Thumbprint.ToLower().StartsWith(' | ||
+ | </ | ||
+ | |||
+ | To check for expired / revoked certs: | ||
+ | |||
+ | <code powershell> | ||
+ | $certs = Get-ChildItem -Path Cert: | ||
+ | foreach ($cert in $certs) { | ||
+ | Write-Host " | ||
+ | |||
+ | if ($certs.NotAfter -lt (Get-Date)) { | ||
+ | Write-Host " | ||
+ | } | ||
+ | elseif ($cert | Test-Certificate) { | ||
+ | Write-Host " | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Get Install-Module working behind a webproxy ===== | ||
+ | |||
+ | - Run '' | ||
+ | - Add this to the top:< | ||
+ | # Uncomment this to use PowerShellGet | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | - Uncomment, fill out the details, and save. | ||
+ | - Start a //new// Powershell session. | ||
+ | - Run '' | ||
+ | - Run '' | ||
+ | - Once installation is complete, comment out commands and change password. | ||
+ | |||
+ | If this doesn' | ||
+ | |||
+ | ===== No Sleep ===== | ||
+ | |||
+ | May only work inside Windows Powershell ISE. | ||
+ | |||
+ | <code powershell> | ||
+ | $intervalSeconds = 60 | ||
+ | $mouseDistance = 1 | ||
+ | |||
+ | $myshell = New-Object -com " | ||
+ | while ($true) { | ||
+ | Start-Sleep -Seconds $intervalSeconds | ||
+ | $Pos = [System.Windows.Forms.Cursor]:: | ||
+ | [System.Windows.Forms.Cursor]:: | ||
+ | [System.Windows.Forms.SendKeys]:: | ||
+ | Write-Host 'A shuffle to the right.' | ||
+ | Start-Sleep -Seconds $intervalSeconds | ||
+ | $Pos = [System.Windows.Forms.Cursor]:: | ||
+ | [System.Windows.Forms.Cursor]:: | ||
+ | [System.Windows.Forms.SendKeys]:: | ||
+ | Write-Host 'A shuffle to the left.' | ||
+ | } | ||
+ | </ | ||
===== Text Processing ===== | ===== Text Processing ===== | ||
Line 25: | Line 154: | ||
==== Reformatting by using regex groups ==== | ==== Reformatting by using regex groups ==== | ||
+ | |||
<code powershell> | <code powershell> | ||
# Filter lines by regex. | # Filter lines by regex. | ||
Line 41: | Line 171: | ||
</ | </ | ||
- | ==== Regex replace with groups ==== | + | ==== Regex groups ==== |
<code powershell> | <code powershell> | ||
- | # $1 = group 1, $2 = group 2, etc. | + | $regex=[regex] ('-rw-rw---- 1 root sdcard_rw |
- | '123 456 789' -replace '(\d+ )(\d+)( \d+)', '$1!$2!$3' | + | $input=' |
+ | $matches = $regex.matches($input) | ||
+ | if (!($matches.Success)) { | ||
+ | Write-Host "Regex failed to match: $input" | ||
+ | Exit(-1) | ||
+ | } | ||
+ | Write-Host " | ||
+ | Write-Host " | ||
+ | Write-Host " | ||
</ | </ | ||
- | ===== Searching in files ===== | + | ==== Regex replace with groups |
<code powershell> | <code powershell> | ||
- | Get-ChildItem -Recurse -Path C:\Temp -Include *.txt | Select-String | + | # $1 = group 1, $2 = group 2, etc. |
+ | '123 456 789' | ||
</ | </ | ||
- | ===== Search and replace in a file ===== | + | ==== Pipeline function |
<code powershell> | <code powershell> | ||
- | (Get-Content $filename) -replace ' | + | function Replace-String { |
- | </ | + | [cmdletbinding()] |
+ | Param ( | ||
+ | [parameter(ValueFromPipeline)] | ||
+ | [string]$Input, | ||
+ | [string]$OldValue, | ||
+ | | ||
+ | ) | ||
- | ===== Parameters ===== | + | Process { |
+ | $Input -replace $OldValue, $NewValue | ||
+ | } | ||
+ | } | ||
- | <code powershell> | + | ' |
- | param ( | + | |
- | [parameter(Mandatory=$true)] [string]$targetServer, | + | |
- | [parameter(Mandatory=$true)] [string]$targetWebConfig | + | |
- | ) | + | |
</ | </ | ||
- | |||
- | ===== Search installed certs for thumbprint ===== | ||
- | |||
- | <code powershell> | ||
- | Get-ChildItem -Path Cert: -Recurse | Where-Object { $_.Thumbprint -and $_.Thumbprint.ToLower().StartsWith(' | ||
- | </ | ||
- |
powershell_cheat_sheet.1568242158.txt.gz · Last modified: 2019/09/12 23:49 (external edit)