User Tools

Site Tools


program_lang:powershell_misc

Powershell misc

Powershell man page

List all commands, you can add as parameter -examples -full -detailed

PS /home/manu> get-command *
...
PS /home/manu> get-command *service*

List Get-Command cmdlet with an alias

PS> Get-Command -Name dir
CommandType     Name                                               ModuleName
-----------     ----                                               ----------
Alias           dir -> Get-ChildItem

List all commands from a specific module

PS /home/manu> get-command -module activedirectory

This command gets all of the cmdlets, sorts them alphabetically by the noun in the cmdlet name, and then displays them in noun-based groups:

PS > Get-Command -Type Cmdlet | Sort-Object -Property Noun | Format-Table -GroupBy Noun

uses the All parameter of the Get-Command cmdlet to show all instances of the Notepad command on the local computer.

PS> Get-Command Notepad -All | Format-Table CommandType, Name, Definition

CommandType     Name           Definition
-----------     ----           ----------
Application     notepad.exe    C:\WINDOWS\system32\notepad.exe
Application     NOTEPAD.EXE    C:\WINDOWS\NOTEPAD.EXE

Man page

PS /home/manu> get-help Write-Progress                                                                                                                                                                                

NAME
    Write-Progress
    
SYNTAX
    Write-Progress [-Activity] <string> [[-Status] <string>] [[-Id] <int>] [-PercentComplete <int>] [-SecondsRemaining <int>] [-CurrentOperation <string>] [-ParentId <int>] [-Completed] [-SourceId <int>]  
    [<CommonParameters>]

Commands alias

PS /home/manu> get-alias

Remove header/descriptor

PS /root> Get-VM lnx01a | ForEach-Object {$_.Name}
lnx01a 

Upper / Lower

PS /root> $text1 = "Hello".ToUpper()
PS /root> Write-Host $text1
HELLO
PS /root> $text1 = "Hello".ToLower()
PS /root> Write-Host $text1
hello

ATTENTION: Powershell is not case sensitive

PS /root> $text1 = "Hello"
PS /root> $text2 = "HELLO"
PS /root> $text1 –eq $text2
True

List full parameters

Get full parameters format-list or fl

PS /root> Get-Process | format-list
Id      : 1627
Handles : 7
CPU     : 0
SI      : 1627
Name    : xrdp-sesman

...

Get selected parameters

PS /root> Get-Process | format-list -Property Id,CPU
Id  : 1627
CPU : 0

...

Powershell tail, sort

PS /root> Get-Process | Sort-Object -Property CPU | Select-Object -Last 5                                                                                                                                    

 NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName                                                                                                                                                       
 ------    -----      -----     ------      --  -- -----------                                                                                                                                                       
      0     0.00    1695.88    3461.67    2118 118 X                                                                                                                                                                 
      0     0.00      83.30    3837.19    5662 328 chrome                                                                                                                                                            
      0     0.00     562.67    4124.23    3965 283 firefox                                                                                                                                                           
      0     0.00      20.55    5235.46    2373 370 pulseaudio                                                                                                                                                        
      0     0.00    6483.15   79748.30   31295 264 VirtualBoxVM  

log your script

$Logfile = $MyInvocation.MyCommand.Path -replace '\.ps1$', '.log'

Start-Transcript -Path $Logfile
#Doing some stuff with the Verbose parameter
Get-ChildItem -Verbose
Get-Service -Verbose
Get-Process -Verbose
Write-Output 'Writing some text to the log file' 

Stop-Transcript

Suppress multiple pattern in list

PS /usr/fcm> $Eliminate = @("vml","vm2","vm3")
PS /usr/fcm>  Get-VM | Select-String -pattern $Eliminate  -notMatch
vm4
vm5

grep in Powershell

PS /usr/bin/fcm/tmp> Get-Content -Path vminfo.txt |  Where-Object { $_ -Match  "^VM_Datastore:"}

sed in Powershell

# cat input.txt | sed 's/old/new/' > output.txt
  cat: in Powershell : Get-Content
  $_ : pipe
  { } : command delimiter
  % : iteration
PS> Get-Content input.txt | %{$_ -replace "old", "new"} | Set-Content output.txt

sort in Powershell

PS> Get-ChildItem -Path C:\Test | Sort-Object
Directory: C:\Test
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/13/2019     08:55             26 anotherfile.txt
-a----        2/13/2019     13:26             20 Bfile.txt
-a----        2/12/2019     15:40         118014 Command.txt
-a----         2/1/2019     08:43            183 CreateTestFile.ps1
d-----        2/25/2019     18:25                Files
PS> Get-ChildItem -Path C:\Test -File | Sort-Object -Property Length
Directory: C:\Test
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/13/2019     13:26             20 Bfile.txt
-a----        2/12/2019     16:24             23 Zsystemlog.log
-a----        2/13/2019     08:55             26 anotherfile.txt
-ar---        2/12/2019     14:31             27 ReadOnlyFile.txt
-a----         2/1/2019     08:43            183 CreateTestFile.ps1
-a----        2/12/2019     15:40         118014 Command.txt
PS> Get-Process | Sort-Object -Property WS | Select-Object -Last 5                                                                                                                           

 NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName                                                                                                                                                       
 ------    -----      -----     ------      --  -- -----------                                                                                                                                                       
      0     0.00     530.43     369.05   24977 283 firefox                                                                                                                                                           
      0     0.00     547.91    1360.88    4559 237 evolution                                                                                                                                                         
      0     0.00    1418.94      44.16   14488 237 okular                                                                                                                                                            
      0     0.00    2072.61    3317.51    2071 071 X                                                                                                                                                                 
      0     0.00    6548.90   33021.09    6754 063 VirtualBoxVM 
PS> Get-Process | ft name,starttime
xdg-document-po 25/12/21 07:49:32
xdg-permission- 25/12/21 07:49:32
xembedsniproxy  25/12/21 07:49:30
xfs_mru_cache   25/12/21 07:45:06
xfs-buf/sda4    25/12/21 07:45:06
PS> Get-Service |Sort-Object -Property @{Expression = "Status"; Descending = $true},@{Expression = "DisplayName";Descending = $false}

Status   Name               DisplayName
------   ----               -----------
Running  Appinfo            Application Information
Running  BthAvctpSvc        AVCTP service
Running  BrokerInfrastru... Background Tasks Infrastructure Ser...
Running  BDESVC             BitLocker Drive Encryption Service
Running  CoreMessagingRe... CoreMessaging
Running  VaultSvc           Credential Manager
Running  DsSvc              Data Sharing Service
Running  Dhcp               DHCP Client
| Sort-Object -Unique : only one occurrence of each word
| Sort-Object : string sort
| Sort-Object {[int]$_} : integer sort
-CaseSensitive ...
-Descending

Misc commands

tail

get last 5 lines from file

PS> Get-Content -path /root/toto.py -tail 5     

PS> get-content |select -last 5 

PS> get-content |select -last 5 | Write-Output                                                                                                                                                             

get first 5 lines from file

PS> Get-Content -path /root/toto.py -totalcount 5 
program_lang/powershell_misc.txt · Last modified: 2022/11/18 17:45 by manu