Learn-Software "PowerShell" -Basic
Learn the basic operations of the shell (command-line interface).
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
- β Install PowerShell
- β Launch PowerShell
- β (Optional) Install Windows Terminal
- β The verified environment is here
Type the Command
Basic Shell Operations
The basic steps to operate the computer by typing commands into the shell are as follows:
- Open the shell: See β Launch-PowerShell
- Type the command: For example, type
ls
- Execute the command: After typing the command, press ENTER
- 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.
- 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
- 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 toGet-Content
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
- 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 forGet-ChildItem
- Example:
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
- The
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 commandsGet-Command Get-*
: Get commands that includeGet-
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 opena.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)
[Part 1] String Class and Basic Text Search
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.
Related Links
- About
- PowerShell Commands
- Microsoft.Learn – Get-History
- Microsoft.Learn – Get-Help
- Microsoft.Learn – Get-Command
- Microsoft.Learn – Get-Alias
- Microsoft.Learn – Get-Date
- Microsoft.Learn – Get-Content
- Microsoft.Learn – Set-Location
- Microsoft.Learn – Push-Location
- Microsoft.Learn – Pop-Location
- Microsoft.Learn – Invoke-Item
- Microsoft.Learn – New-Item
- Microsoft.Learn – Move-Item
- Microsoft.Learn – Copy-Item
- Microsoft.Learn – Remove-Item
- Microsoft.Learn – Rename-Item