Learn-Software "PowerShell" -Basic

Learn the basic operations of the shell (command-line interface).

Page content

Introduction

Learn how to control a computer using PowerShell (a command-line interface) This article covers how to type the command in PowerShell, tips, and the commands that I use frequently.

All “shell” operations are performed by typing text called “the command.” Although the operation may be difficult to grasp at first, you will become proficient at it through trial and error. The command operations are the same as those used in daily GUI operations, such as creating, moving, copying, deleting, renaming, starting, and listing files and directories (folders).

A “Learning Checklist for PowerShell Beginners ” has been included as an appendix at the end.

Prerequisites

Type the Command

Basic Shell Operations

The basic steps to operate the computer by typing commands into the shell are as follows:

  1. Open the shell: See β†’ Launch-PowerShell
  2. Type the command: For example, type ls
  3. Execute the command: After typing the command, press ENTER
  4. Check the command output:
    • The command execution result is output to the terminal
    • If an error occurs, an error message is output

Example: Execute the command “Get-Date ” to get the current date and time.

Get-Date
Sunday, February 16, 2025 4:11:50 PM

Example: Read the help for the PowerShell command “Get-Content ” in a browser.

Get-Help Get-Content -Online

Use Auto-Completion to type the command easier and faster

Although PowerShell command naming conventions are consistently structured as <verb>-<noun> and intuitively easy to understand, they are long and tedious to type manually. Actively utilize Autocompletion to make command type easier and more accurate.

  1. Command History
    • You can reuse previously typed commands by pressing the ↑ and ↓ keys
    • You can get a list of history with the “Get-History ” command
      • See β†’ about_History
      • Get the path of the history file: (Get-PSReadlineOption).HistorySavePath
  2. TAB-Completion
    • Type part of the command (or filename) and press TAB
    • If there are multiple candidates, pressing TAB β†’ TAB … cycles through the candidates
    • Example: Type Get-Cont β†’ TAB β†’ completed to Get-Content
  3. CTRL+SPACE Completion (MenuComplete )
    • Type part of the command (or filename) and press CTRL+SPACE
    • Candidates are listed, so use the arrow keys to select and press ENTER
    • Example: Type Get-Ch β†’ CTRL+SPACE β†’ candidate list is displayed
  4. PSReadLine Predictive IntelliSense (IntelliSense )
    • Overview: As you type part of the command (or filename), prediction candidates based on command history, etc. are displayed
    • Operation:
      • InlineView (Default): accept with β†’ and execute with ENTER
      • ListView (Switch with F2): select with ↑, ↓ and execute with ENTER
    • Check the settings:
      • Get-PSReadLineOption | Select-Object -Property PredictionSource
      • If it’s other than None (for example, History), it’s enabled

Use Short Names (Aliases) for Easier command typing

Commands with registered short names (aliases ) can be typed with shorter alternate names.

  • How to use aliases in PowerShell
    • Search aliases: Use the “Get-Alias ” command to check the registered aliases
    • Use aliases: Type the alias instead of the command fullname
      • Example: ls is an alias for Get-ChildItem

The following two commands are equivalent (man is an alias for Get-Help, cat is an alias for Get-Content):

Get-Help Get-Content
# use aliases
man cat

Get and read Help

You can learn about the command summary and usage with the “Get-Help ” command. PowerShell commands have comprehensive help, so just reading them is a good way to learn PowerShell.

  • How to use “Get-Help ”:
    • Get-Help <Name>
    • Get-Help <Name> -Online
      • The -Online option displays the information on the web in a browser
Get-Help Get-Content
NAME
    Get-Content

SYNTAX
    Get-Content [-Path] <string[]>...
    Get-Content -LiteralPath <string[]>...

ALIASES
    gc
    cat
    type

REMARKS
    Get-Help cannot find the Help files for this cmdlet on this computer.
     It is displaying only partial help.
        -- To download and install Help files for the module that includes
    this cmdlet, use Update-Help.
        -- To view the Help topic for this cmdlet online, type: "Get-Help
     Get-Content -Online" or
           go to https://go.microsoft.com/fwlink/?LinkID=2096490.

Searching the Command

You can search for commands with “Get-Command .”

  • How to use “Get-Command ”:
    • Get-Command *: Get all types of commands
    • Get-Command Get-*: Get commands that include Get-
    • Get-Command *-Content: Get commands that include -Content

Knowing that the PowerShell command naming conventions are structured as “<verb>-<noun>” allows you to go some way to predicting whether commands exist, even if you don’t know them. You can also specify and search explicitly with -Noun or -Verb options.

# Search for commands that include "Content" in <noun>
Get-Command -Noun "Content"
CommandType     Name            Version
-----------     ----            -------
Cmdlet          Add-Content     7.0.0…
Cmdlet          Clear-Content   7.0.0…
Cmdlet          Get-Content     7.0.0…
Cmdlet          Set-Content     7.0.0…

Daily Command Operations

For me, daily computer operations involve working with the filesystem (files and directories). The following shows the workflow with the corresponding commands. The same operations can be done visually using Explorer and mouse clicks, without using the CLI (command line interface).

Operation Command (Alias)
1. Move directories cd , pushd , popd
2. List files in a directory ls
3. Open, create, move, copy, delete, rename files ii , mkdir , ni , mv , cp , rm , ren
4. Edit, save, and close files through the appropriate application

Examples of actual operations. Using aliases, TAB completion, and command history to reduce input work:

Operation Command
1. List files in a directory
( β†’ As a result, the file we were looking for was not found. πŸ˜’οΌ‰
ls path/to/the/directory
2. List files in another directory
( β†’ As a result, we find the file we want. πŸ™„οΌ‰
ls path/to/the/another/directory
3. Move to the directory pushd path/to/the/another/directory
4. Open the file ii file.xlsx
5. Edit, save, and close the file through the appropriate application
6. Return to the previous directory popd

Each command is explained in detail below. For more detailed information, run man <command> -Online. The ii command (an alias for Invoke-Item ) is particularly useful. When you run ii <file>, the file will be opened by the appropriate application based on its extension. Once you are familiar with the ii γ€€command, you will be able to operate frequently used folders and files without having to move from the current directory:

Operation Command
1. Open the file (or directory) ii path/to/file.xlsx
2. Edit, save, and close the file through the appropriate application

ls (Get-ChildItem)

Synopsis: Lists the files and folders in the current directory.

Param Command Note
Help man ls -Online
Example ls Lists file and folder information in the current directory.
Example ls -Name Displays only file and folder names in the current directory.
Example ls *.txt Lists files named *.txt.
Example ls *.txt -Recurse Lists files named *.txt and recursively searches subdirectories.
Example Get-ChildItem | Select-Object -ExpandProperty FullName Gets the full path of files and directories in the current directory as strings.

β†’ Back : Daily Command Operations Table

cd (Set-Location)

Synopsis: Moves to the specified directory.

Param Command Note
Help man cd -Online
Example cd, cd ~ Moves to the home directory.
Example cd C:/Users/btklab/ Absolute path: Moves to the home directory of user btklab.
Example cd ./ Relative path: Stays in the current directory (does not move).
Example cd ../ Relative path: Moves to the parent directory.
Example cd - Moves back to the previous directory.

β†’ Back : Daily Command Operations Table

pushd (Push-Location)

Synopsis: Adds the current location to the location stack and moves to the specified directory. By using pushd followed by popd , you can return to the current location (the location registered at the top of the stack).

Param Command Note
Help man pushd -Online
Example cd ~ ; pushd C:/Users/ Absolute path: Moves from the home directory to the Users directory.
Example popd Moves back to the home directory (the location before the Users directory).

β†’ Back : Daily Command Operations Table

popd (Pop-Location)

Synopsis: Returns to the last location pushed onto the stack by pushd .

Param Command Note
Help man popd -Online
Example cd ~ ; pushd C:/Users/ Absolute path: Moves from the home directory to the Users directory.
Example popd Moves back to the home directory (the location before the Users directory).

β†’ Back : Daily Command Operations Table

ii (Invoke-Item)

Synopsis: Opens files or folders with the associated application.

Param Command Note
Help man ii -Online
Example ii . Opens the current directory in the explorer.
Example ii a.txt Opens the file a.txt in the text editor.
Example ii a.xlsx Opens the file a.xlsx in Excel.
Tips
There is a similar command called [Start-Process][]. Both open a.txt in a text editor:
Invoke-Item "C:/path/to/file.txt"
Start-Process "notepad.exe" "C:/path/to/file.txt"
Use Invoke-Item to easily open files or folders.
Use Start-Process when you want to launch a specific application with specific arguments.

β†’ Back : Daily Command Operations Table

mkdir (New-Item)

Synopsis: Creates a new directory (folder).

Param Command Note
Help man mkdir -Online
Example mkdir "newdir" Creates a new directory newdir in the current directory.
Example New-Item -Path . -Name "newdir" -ItemType "directory" Same as above.

β†’ Back : Daily Command Operations Table

ni (New-Item)

Synopsis: Creates a new directory or file.

Param Command Note
Help man ni -Online
Example ni -Path . -Name "a.txt" -ItemType "file" Creates an empty file a.txt in the current directory.
Example New-Item -Path . -Name "a.txt" -ItemType "file" Same as above.

β†’ Back : Daily Command Operations Table

mv (Move-Item)

Synopsis: Moves or renames a file or folder. Adding the -WhatIf switch allows you to confirm the operation without actually executing it.

Param Command Note
Help man mv -Online
Example mv C:/a.txt E:/Temp/b.txt Renames the file a.txt and moves it from the C: drive to the E:/Temp directory, changing its name to b.txt.
Example mv -Path C:/a.txt -Destination E:/Temp/b.txt Same as above.
Example ls a.txt | mv -Destination E:/Temp/ Moves the file a.txt from the current directory to the E:/Temp directory. In this case, explicitly specify the -Destination option.

cp (Copy-Item)

Synopsis: Copies files or folders. The original file is not deleted. By adding the -WhatIf switch, you can verify the action without executing it.

Param Command Note
Help man cp -Online
Example cp ./a.txt ../hoge File copy: Copies the file a.txt from the current directory to the directory hoge one level up.
Example cp -Path ./a.txt -Destination ../hoge Same as above.
Example cp -Path "C:/hoge" -Destination "C:/fuga" -Recurse Directory copy: Copies the directory C:/hoge and its contents to the directory C:/fuga.
Example ls a.txt | cp -Destination E:/Temp/ Copies the file a.txt from the current directory to the E:/Temp directory. In this case, explicitly use the -Destination option. An error is returned if the item does not exist.

β†’ Back : Table of everyday command operations

rm (Remove-Item)

Synopsis: Deletes files or directories. If the specified item does not exist, it returns an error and does not execute. Note that deleted items are not moved to the “Recycle Bin” and cannot be restored. By adding the -WhatIf switch, you can verify the action without executing it.

Param Command Note
Help man rm -Online
Example rm a.txt Deletes the file a.txt from the current directory.
Example ls a.txt | rm Same as above.
Example Remove-Item -Path a.txt Same as above.
Example rm *.txt Deletes one or more files with the .txt extension from the current directory.
Example ls *.cache -Recurse | rm Deletes one or more files with the .cache extension from the current directory and subdirectories.
Example Remove-Item a.md -WhatIf Dry run: The result is output to the console without actually executing it.

β†’ Back : Table of everyday command operations

ren (Rename-Item)

Synopsis: Renames files or folders. By adding the -WhatIf switch, you can verify the action without executing it.

Param Command Note
Help man ren -Online
Example ren "./a.txt" "b.txt" File rename: Renames the file a.txt in the current directory to b.txt.
Example ren -Path "./a.txt" -NewName "b.txt" Same as above.
Example Rename-Item -Path "./a.txt" -NewName "b.txt" Same as above.
Example Get-ChildItem *.txt | Rename-Item -NewName { $_.Name -replace ‘.txt’,’.log’ } Batch rename of multiple files: Renames the extension of files with the .txt extension in the current directory to .log.

β†’ Back : Table of everyday command operations

πŸ“‹ A Learning Checklist for PowerShell Beginners

Checklist and learning resource links to reach a level where you can handle daily tasks with PowerShell. The links are primarily from Microsoft’s official site, “PowerShell Documentation – PowerShell ”.

Step 1: Understanding the Basics of PowerShell

Check Item Link
Able to explain what PowerShell is Getting Started with PowerShell
Able to launch PowerShell and enter commands Getting Started with PowerShell
Able to look up cmdlet information using Get-Help Using the Help System
Able to connect commands using the pipeline (|) Pipelines in PowerShell

Step 2: Text Processing and Data Manipulation

Check Item Link
Able to create and manipulate arrays and lists Everything About Arrays
Able to import and export data from CSV files Import-Csv
Able to read and write JSON and XML files Import Data from Different Formats

Step 2.1: Understanding the Use of Quotation Marks

Check Item Link
Able to understand and appropriately use the differences between single and double quotes About Quoting Rules
Able to escape characters using the backquote About Quoting Rules
Able to handle multi-line strings using here-strings About Quoting Rules

Step 2.2: Mastering Regular Expressions (Regex)

Check Item Link
Able to perform pattern matching using the -match operator About Regular Expressions
Able to replace parts of a string using the -replace operator About Regular Expressions
Able to perform complex search and replace operations using the [regex] class About Regular Expressions

Step 2.3: Parsing Text (String Processing)

Check Item Link
Able to use useful methods of the String class Parsing Text with PowerShell (1/3)
Understands the basics of regular expressions Parsing Text with PowerShell (1/3)
Able to search text using the Select-String cmdlet Parsing Text with PowerShell (1/3)
[Part 2] PowerShell-Style Parsing Techniques
Check Item Link
Able to split strings using the -split operator Parsing Text with PowerShell (2/3)
Able to perform regex matching using the -match operator Parsing Text with PowerShell (2/3)
Able to perform pattern matching using the switch statement Parsing Text with PowerShell (2/3)
Able to perform advanced regex operations using the [regex] class Parsing Text with PowerShell (2/3)
[Part 3] Practical Application: Creating a Parser Using switch
Check Item Link
Able to create a practical parser using the switch statement Parsing Text with PowerShell (3/3)

Step 3: Creating Practical Scripts

Check Item Link
Able to create simple functions About Functions
Able to create function help (comment-based help) About Comment Based Help

Step 4: Deepen Your Knowledge

Check Item Link
Understands modules, object manipulation, and error handling More PowerShell Learning Resources
Able to test PowerShell using Pester Testing PowerShell with Pester

Terms

PowerShell Commands

In the world of PowerShell, “the command” are referred to as “the cmdlet.” Knowing that the cmdlet follow the naming convention of <Verb>-<Noun> can help you (to some extent) predict the existence of unknown commands.