PowerShell is a useful Windows command-line language version that helps you seamlessly perform and automate critical tasks on your systems. But how can you perform these tasks and make the most of PowerShell on your Windows system?
Don’t worry — we’ve compiled a PowerShell cheat sheet documenting PowerShell syntax and all the PowerShell commands to help you optimize PowerShell and even prepare for job interviews.
Download Our PowerShell Cheat Sheet PDF Here.
PowerShell Cheat Sheet
Let’s start with a quick introduction to Windows 10 PowerShell commands.
PowerShell Basics
PowerShell is a cross-platform and a commonly used task automation solution combining the power of the command-line shell, a scripting language, and a configuration management framework. You can run PowerShell on Windows, Linux, and macOS operating systems. Unlike other available shells that only accept and return data, PowerShell accepts and returns .NET objects.
This shell comes with the following features.
- Robust command-line history
- Extensive features, like tab completion and command prediction
- Command and parameter aliases
- Pipeline for changing commands
- In-console help system, like Unix man pages
Considering the features of any scripting language, you can use PowerShell to automate the system management process and task. It lets you build, test, and deploy solutions in CI/CD environments.
PowerShell is built on the .NET Common Language Runtime (CLR), which means all the inputs and outputs are .NET objects. You do not have to parse text output to retrieve information from it.
The PowerShell scripting language comes with the following features.
- Functions, classes, objects, and modules
- Easy formatting system for providing clear output for enhanced readability
- Built-in support for different data formats, such as CSV, JSON, and XML
- Type system for creating dynamic types
Now, let’s get into some useful PowerShell commands.
Introduction to Windows PowerShell 5.1
PowerShell Commands Cheat Sheet
cmdlets
Cmdlets are PowerShell’s internal commands. These cmdlets will return one or more objects to the pipeline where at the end of that pipeline, we mention some properties of the objects in the following table to see their values displayed on the screen.
Command |
Description |
|
This command allows you to get support with PowerShell. |
|
This command offers you a list of available PSDrives, such as c, env, hklm, hkcu, alias, etc. |
|
In any registry, children are the subkeys of the current key. To get the required details, you can use the following command. |
|
Run this command to list all the children recursively of the current PSdrive, folder, or registry key. |
|
Use this command To include the hidden folders (directories). |
|
Run any of these commands to get the list file and directory names in the current folder. |
|
Use this command to get the number of entries in the collection of objects returned by the Get-Children. |
PSdrives
PSdrives are the collection of entities grouped together so they can be accessed as a filesystem drive. The “PSprovider” does this grouping.
By default, a PS session can access several PSdrives including c:, env:, alias:, and HKLM:, where c: refers to the usual Windows c-drive; env: is the space of Windows environmental variables; alias: is the collection of cmdlet aliases; and HKLM is a hive in the registry.
Any PS session will enter the user’s home folder. If you want to switch from a PS session to another PSdrive and retrieve the information from that drive, consider the following commands:
Commands |
Description |
|
The prompt character will change to the “ENV:\>”. Set-Location env by running the following command:
|
|
This command will get you all the environment variables. |
|
Use this command to get the environment variables of “userprofile.” |
|
Run the following command to change the prompt character to “Alias.” |
|
Run this command to get all the children of all aliases. |
|
Use this command to get the “C:/>” prompt again, back to the default drive. |
|
Run this command to find what alias “ls” stands for. |
Pipelines
Cmdlets uses the pipelines to pass the objects but not the character streams like Unix. The pipeline character is | (ASCII 124), followed by a command that handles the output passed through the pipeline. The pipeline consists of the following three stages.
Get-ChildItem *.txt | Where-Object length -lt 1000 | Sort-Object length
The following table highlights some of the basic pipeline commands:
Command |
Description |
|
Easily sets the value of the ‘lastwritetime.year’ property to the present date and time without affecting the file’s content. |
|
Provides an empty result |
|
Changes the old file names and file extensions to the new ones |
|
A trivial renaming command that invokes an automatic variable |
|
If the piped object $_ doesn’t have the member property (name), you will receive an error, as parameter $_.name is null |
|
Displays the list of the names of all the files that are present in the current folder sorted in alphabetical order. |
|
Moves all the files to the folder subdirectory |
|
Gives the error message that Move-Item lacks input |
Alias
Cmdlets come with several aliases. The following table highlights a few of aliases, along with their descriptions:
Command |
Description |
|
Appends value to a file |
|
Finds file content in an array |
|
Changes folder, key, or PS drive |
|
Clears console |
|
Delete files |
|
Lists Folder, Key, or PSDrive Children |
|
Sends the array to the console, pipeline, or redirect it to the file |
|
Traverses each object in a pipeline |
|
Formats the table with selected properties for each object in each column |
|
Formats the process properties by name |
|
Provides Cmdlet Alias |
|
Provides you with commands from the current session only |
|
Retrieves all the object members |
|
Provides the specified item’s properties |
|
Gives the current value for a specified property while using the name parameter |
|
Finds session variable names and sessions |
|
Creates a new file, directory, symbolic link, registry key, or registry entry |
|
Gives the entire list of all the running processes |
|
Provides the current directory’s or registry key’s location |
|
Renames the old item name with the new name |
|
Removes the specified directory, files, or registry keys |
|
Removes the specified variable |
|
Suspends an activity for a specified period of time |
Operators
-
Arithmetic Operators
Operator |
Description |
Example |
+ |
Adds integers; concatenates |
6 + 2 |
strings, arrays, and hash tables. |
«file» + «name» @(1, «one») + @(2.0, «two») @{«one» = 1} + @{«two» = 2} |
|
+ |
Makes a number out of an object |
123 |
— |
Subtracts one value from another |
6 — 2 |
— |
Calculates the opposite number |
— -6 |
(Get-Date).AddDays(-1) |
||
* |
Multiply numbers or copy strings and arrays for a specified number of times |
6 * 2 |
@(«!») * 4 |
||
«!» * 3 |
||
/ |
Divides two values |
6 / 2 |
% |
Modulus — returns the remainder of a division operation |
7 % 2 |
-band |
Bitwise AND |
5 -band 3 |
-bnot |
Bitwise NOT |
-bnot 5 |
-bor |
Bitwise OR |
5 -bor 0x03 |
-bxor |
Bitwise XOR |
5 -bxor 3 |
-shl |
Shifts bits to the left |
102 -shl 2 |
-shr |
Shifts bits to the right |
102 -shr 2 |
- Operator Precedence
Precedence |
Operator |
Description |
1 |
() |
Parentheses |
2 |
— |
For a negative number or unary operator |
3 |
*, /, % |
For multiplication and division |
4 |
+,- |
For addition and subtraction |
5 |
-band, -bnot, -bor, -bxor, -shr, and -shl |
For bitwise operations |
- Assignment Operators
Operator |
Description |
= |
Sets a variable’s value to the specified value |
+= |
Increases a variable’s value by the specified value or appends the specified value to the existing value |
-= |
Decreases a variable’s value by a specified value |
*= |
Multiplies a variable’s value by a specified value, or appends the specified value to the existing value |
/= |
Divides a variable’s value by a specified value |
%= |
Divides the variable’s value by a specified value and then assigns the remainder (modulus) to the variable. |
#ERROR! |
Increases a variable’s value, assignable property, or array element by 1. |
— |
Decreases the variable’s value, assignable property, or array element by 1. |
- Comparison Operators
Type |
Operator |
Comparison test |
Equality |
-eq |
equals |
-ne |
not equals |
|
-gt |
greater than |
|
-ge |
greater than or equal |
|
-lt |
less than |
|
-le |
less than or equal |
|
Matching |
-like |
string matches wildcard pattern |
-notlike |
string doesn’t match wildcard pattern |
|
-match |
string matches regex pattern |
|
-notmatch |
string doesn’t match regex pattern |
|
Replacement |
-replace |
replaces strings matching a regex pattern |
Containment |
-contains |
collection contains a value |
-notcontains |
collection doesn’t contain a value |
|
-in |
value is in a collection |
|
-notin |
value is not in a collection |
|
Type |
-is |
both objects are the same type |
-isnot |
objects are not the same type |
- Logical Operators
Operator |
Description |
Example |
-and |
Logical AND. TRUE when both statements are true. |
(1 -eq 1) -and (1 -eq 2) FALSE |
-or |
Logical OR. TRUE when either of the statements is TRUE. |
(1 -eq 1) -or (1 -eq 2) TRUE |
-xor |
Logical EXCLUSIVE OR. TRUE when only one statement is TRUE. |
(1 -eq 1) -xor (2 -eq 2) FALSE |
-not |
Logical not. Negates the statement that follows. |
-not (1 -eq 1) FLASE |
! |
Same as -not |
!(1 -eq 1) FALSE |
- Redirection Operator
Operator |
Description |
Syntax |
> |
Send specified stream to a file |
n> |
>> |
Append specified stream to a file |
n>> |
>&1 |
Redirects the specified stream to the Success stream |
n>&1 |
- Type Operators
Operator |
Description |
Example |
-isNot |
Returns TRUE when the input not an instance of the specified.NET type. |
(get-date) -isNot [DateTime] FALSE |
-as |
Converts the input to the specified .NET type. |
«5/7/07» -as [DateTime] Monday, May 7, 2007 00:00:00 |
Some Other Operators
Operator |
Description |
() Grouping Operator |
Allows you to override operator precedence in expressions |
&() Subexpression Operator |
Gives you the result of one or more statements |
@( ) Array Subexpression Operator |
Returns the results of one or more statements in the form of arrays. |
& Background Operator |
The pipeline before & is executed by this command in a Powershell job. |
[] Cast Operator |
Converts objects to the specific type. |
Regular Expressions
A regular expression is a pattern that is used to match text that includes literal characters, operators, and other constructs. PowerShell regular expressions are case-insensitive by default.
Method |
Case Sensitivity |
Select-String |
use -CaseSensitive switch |
switch statement |
use the -casesensitive option |
operators |
prefix with ‘c’ (-cmatch, -csplit, or -creplace) |
- Character Literals
A regular expression can be a literal character or a string.
- Character Groups
These allow you to match any number of characters one time, while [^character group] only matches characters NOT in the group.
- Character Range
A pattern can also be a range of characters. The characters can be alphabetic [A-Z], numeric [0-9], or even ASCII-based [ -~] (all printable characters).
-
Numbers
The \d character class will match any decimal digit. Conversely, \D will match any non-decimal digit.
-
Word Character
The \w character class will match any word character [a-zA-Z_0-9]. To match any non-word character, use \W.
-
Wildcard
The period (.) is a wildcard character in regular expressions. It will match any character except a newline (\n).
-
Whitespace
Whitespace is matched using the \s character class. Any non-whitespace character is matched using \S. Literal space characters ‘ ‘ can also be used.
-
Escaping Characters
The backslash (\) is used to escape characters so the regular expression engine doesn’t parse them.
The following characters are reserved: []().\^$|?*+{}.
-
Substitution in Regular Expression.
The regular expressions with the -replace operator allows you to dynamically replace text using captured text.
<input> -replace <original>, <substitute>
Flow Control
-
ForEach-Object
ForEach-Object is a cmdlet that allows you to iterate through items in a pipeline, such as with PowerShell one-liners. ForEach-Object will stream the objects through the pipeline.
Although the Module parameter of Get-Command accepts multiple values that are strings, it will only accept them via pipeline input using the property name, or parameter input.
If you want to pipe two strings by value to Get-Command for use with the Module parameter, use the ForEach-Objectcmdlet:
$ComputerName = 'DC01', 'WEB01'
foreach ($Computer in $ComputerName) {
Get-ADComputer -Identity $Computer
}
- For
A “for” loop iterates while a specified condition is true.
For example:
for ($i = 1; $i -lt 5; $i++) {
Write-Output "Sleeping for $i seconds"
Start-Sleep -Seconds $i
}
- Do
There are two different “do” loops in PowerShell. Do Until runs while the specified condition is false.
Example 1:
$number = Get-Random -Minimum 1 -Maximum 10
do {
$guess = Read-Host -Prompt "What's your guess?"
if ($guess -lt $number) {
Write-Output 'Too low!'
}
elseif ($guess -gt $number) {
Write-Output 'Too high!'
}
}
until ($guess -eq $number)
Example 2:
$number = Get-Random -Minimum 1 -Maximum 10
do {
$guess = Read-Host -Prompt "What's your guess?"
if ($guess -lt $number) {
Write-Output 'Too low!'
} elseif ($guess -gt $number) {
Write-Output 'Too high!'
}
}
while ($guess -ne $number)
- While
Similar to the Do While loop, a While loop runs as long as the specified condition is true. The difference however, is that a While loop evaluates the condition at the top of the loop before any code is run. So, it doesn’t run if the condition evaluates to false.
For example:
$date = Get-Date -Date 'November 22'
while ($date.DayOfWeek -ne 'Thursday') {
$date = $date.AddDays(1)
}
Write-Output $date
Variables
PowerShell allows you to store all types of values. For example, it can store command results and command expression elements like names, paths, and settings. Here are some of PowerShell’s different variables.
- User-created variables: These are created and maintained by the user. The variables you create at the PowerShell command line will only exist until the PowerShell window is open. When you close the PowerShell window, these variables are deleted. If you want to save a variable, you need to add it to your PowerShell profile. You can create variables and declare them with three different scopes: global, script, or local.
- Automatic variables: These variables store the state of PowerShell and are created by PowerShell. Only PowerShell can change their values as required to maintain accuracy. Users can’t change these variables’ value. For example, the $PSHOME variable will store the path to the PowerShell installation directory.
- Preference variables: These variables store user preferences for PowerShell and are created by PowerShell. These variables are populated with default values and can be changed by the users. For example, the $MaximumHistoryCount variable specifies the maximum number of entries in the session history.
To create a new variable, you need to use an assignment statement and assign a value to the variable. There is no need to declare the variable before using it. The default value of all variables is $null.
For example:
$MyVariable = 1, 2, 3
$MyVariable
Function
-
Naming Your Function
Use a Pascal case name with an approved verb and a singular noun to name a function. You can get a list of approved verbs by running Get-Verb:
Get-Verb | Sort-Object -Property Verb
- Creating a Simple Function
Use a function keyword followed by the function name to create a simple function. Then, use an open and closing curly brace. The function will execute code contained within those curly braces.
For example:
function Get-Version {
$PSVersionTable.PSVersion
}
Working with Modules
A module is a package containing PowerShell members, such as cmdlets, providers, functions, workflows, variables, and aliases. You can implement package members in a PowerShell script, a compiled DLL, or both. PowerShell automatically imports the modules the first time you run any command in an installed module. You can use the commands in a module without setting up or profile configuration.
-
How to Use a Module
To use any module, you need to first install them. Then, find the command that comes with the module and use them.
-
Installing a Module
If you get a module as a folder, install it before you use it on the PowerShell command line. Some modules are preinstalled. You can use the following command to create a Modules directory for the current user:
New-Item -Type Directory -Path $HOME\Documents\PowerShell\Modules
Copy the entire module folder into the Modules directory. You can use any method to copy the folder, including Windows Explorer, Cmd.exe, and PowerShell.
- Finding the Installed Modules
Run the following to find the modules installed in a default module location (not imported).
Get-Module -ListAvailable
- Finding Commands in a Module
Run the following command to find a module’s commands:
Get-Command -Module <module-name>
Get-Command -Module Microsoft.PowerShell.Archive
- Importing a Module
Run the following command with the proper module name:
Import-Module <module-name>
- Removing a Module Name
You can run the following command with the proper module name:
Remove-Module <module-name>
- View Default Module Locations
Use the following command to view default module locations:
$Env:PSModulePath
- Add a Default Module Location
You can use the following command format:
$Env:PSModulePath = $Env:PSModulePath + ";<path>"
- Add a Default Module Location on Linux or MacOS
Use the following to execute the same command as above, only with Linux or macOS:
$Env:PSModulePath += ":<path>"
Hash Tables
A hash table is a complex data structure to store data in the form of key-value pairs. We also refer to a hash table as a dictionary or associative array. To understand a hash table, consider a series of IP addresses and the respective computer names. A hash stores this data in the form of key-value pairs, where IP addresses refer to keys and computer names to their corresponding values.
The hash table syntax is as follows:
@{ <name> = <value>; [<name> = <value> ] ...}
An ordered dictionary’s syntax is as follows:
[ordered]@{ <name> = <value>; [<name> = <value> ] ...}
-
Creating Hash Tables
If you want to create a hash table, follow these steps:
- Start the hash table with an at sign (@) and enclose it in curly braces ({}).
- A hash table should contain at least one key-value pair, and hence, enter the data after creating a hash table.
- Separate key from its value using an equal sign (=).
- Separate the key/value pairs in a hash table with a semicolon (;).
- Enclose the space between the keys in quotation marks. Values must be valid PowerShell expressions. Also, enclose strings in quotation marks, even if there are no spaces between them.
- Save a hash table as a variable to manage it efficiently.
- When assigning an ordered hash table to a variable, place the [ordered] attribute before the @ symbol. If you place it before the variable name, the command fails.
For example:
$hash = @{}
$hash = @{ Number = 1; Shape = "Square"; Color = "Blue"}
[hashtable]$hash = [ordered]@{
Number = 1; Shape = "Square"; Color = "Blue"}
$hash
- Adding and Removing Keys and Values
To add keys and values to a hash table, use the following command format:
$hash[«<key>»] = «<value>»
For example, you can add a «Time» key with a value of «Now» to the hash table with the following statement format:
$hash["Time"] = "Now"
Or
$hash.Add("Time", "Now")
Or, you can remove the key with this statement format:
$hash.Remove("Time")
Asynchronous Event Handling
These cmdlets allow you to register and unregister event subscriptions and list the existing subscriptions. You can also list pending events and handle or remove them as desired.
PowerShell eventing cmdlets
Eventing Cmdlet name |
Description |
Register-ObjectEvent |
This cmdlet registers an event subscription for events generated by .NET objects |
Register-WmiEvent |
Registers an event subscription for events generated by WMI objects |
Register-EngineEvent |
Registers an event subscription for events generated by PowerShell itself |
Get-EventSubscriber |
Gets a list of the registered event subscriptions in the session |
Unregister-Event |
Removes one or more of the registered event subscriptions |
Wait-Event |
Waits for an event to occur. This cmdlet can wait for a specific event or any event. It also allows a timeout to be specified, limiting how long it will wait for the event. The default is to wait forever. |
Get-Event |
Gets pending unhandled events from the event queue |
Remove-Event |
Removes a pending event from the event queue |
New-Event |
This cmdlet is called in a script to allow the script to add its own events to the event queue |
Conclusion
Bottom line? A PowerShell cheat sheet is your one-stop-shop for everything related to PowerShell syntax and commands. In this Windows PowerShell commands cheat sheet, we’ve discussed all the basics to help even beginners navigate PowerShell.
Like any other programming language, you can use variables, and operators, create aliases and functions and even maintain flow control.
If you’re preparing for your upcoming interviews, keep this PowerShell 5.0 cheat sheet handy for quick reference with easy examples.
Interested in expanding your knowledge with Windows Command Line?
Check Out Our Windows Command Line Cheat Sheet
Frequently Asked Questions
1. How Do I Get a List of PowerShell Commands?
You can use the get-command.
2. How Many PowerShell Commands Are There?
There are over 200 commands in PowerShell.
3. How Do I Learn PowerShell for Beginners?
You might consider using Microsoft’s introductory guide to PowerShell. It includes easy language and simple examples to enhance your understanding.
4. Is Windows PowerShell the Same as Command Prompt?
The following table highlights the major differences between PowerShell and command prompt:
PowerShell |
Command Prompt |
Introduced in 2006 |
Introduced in 1981 |
Works with both batch commands and PowerShell cmdlets |
Works only with Batch commands |
Allows you to create aliases for cmdlets or scripts |
Doesn’t support creating command aliases |
Allows you to pass the output from a cmdlet to other cmdlets |
doesn’t allow you to pass the output from a command to other commands |
Output is in the form of an object |
Output is just text |
Can execute a sequence of cmdlets within a script |
Requires one command to finish before another |
Has programming libraries, as it’s built on .net framework. |
No programming libraries |
Seamless integration with WMI |
Requires external plugin for WMI interaction |
Supports Linux systems |
Doesn’t support Linux systems |
Runs all program types |
Only runs console type programs |
5. How Can I Make Command Prompt Default Instead of PowerShell?
Open Settings > Personalization > Taskbar. Now, turn the “Replace Command Prompt with Windows PowerShell» in the menu when I right-click the Start button, or press Windows key+X” option to “Off”.
People are also reading:
- Best Python Courses
- Best Python Certifications
- Best Python Books
- Top Python Projects
- Top Python Interview Questions
- Best Python Interpreters
- Best way to learn python
- How to Run a Python Script?
- Difference between C# vs C++
- Difference between Java vs C#
- Python or Java
- Ruby vs Python
Windows PowerShell является мощным средством и может выполнять практически все, что хочет человек на своем компьютере. Но единственная проблема заключается в том, что это инструмент командной строки и не имеет графического интерфейса. Тем не менее, это может быть полезно, когда интерфейс на основе графического интерфейса не работает или перестает отвечать. К сожалению, главным является тот факт, что обычному пользователю не хватает знаний об использовании PowerShell в полной мере. Но сегодня мы попытаемся обсудить 10 лучших команд PowerShell, которые могут помочь пользователю сделать больше в Windows 10.
Команды PowerShell, которые помогут пользователю сделать больше
Прежде чем мы начнем, необходимо подчеркнуть, что некоторые из этих командлетов могут переключать определенные параметры или конфигурацию на вашем компьютере. Командлет – это сценарий PowerShell, который выполняет одну функцию. Поэтому, чтобы быть в безопасности, сначала создайте точку восстановления системы. Если во время выполнения одного из следующих командлетов что-то пойдет не так, вы всегда сможете восстановить свой компьютер.
Мы рассмотрим командлеты , которые могут выполнять следующие действия:
- Запустите приложение UWP.
- Получить справку о любом командлете.
- Получите похожие команды.
- Найти определенный файл.
- Прочитайте содержимое файла.
- Найти информацию обо всех услугах на компьютере.
- Найти информацию обо всех процессах на компьютере.
- Установка политики выполнения.
- Скопируйте файл или каталог.
- Удалить файл или каталог.
1] Запустите приложение UWP
PowerShell – отличный инструмент, который можно использовать для запуска приложений UWP за считанные секунды. Но главное заключается в правильном выполнении команды. Ты можешь использовать
Start-Process "ms-settings:"
Команда просто для запуска приложения Windows Настройки UWP. Вы можете узнать больше о других URI для других приложений UWP здесь на microsoft.com.
2] Получите справку о любом командлете
Если вы когда-либо не понимаете, какую команду вы должны использовать для выполнения определенной задачи. Или то, что делает конкретный командлет, вам не нужно беспокоиться. Вы можете просто использовать командлет Get-Help, чтобы сделать это. Вы можете использовать его следующими способами:
Get-Help Получить помощь Get-Help -Full Get-Help -Example Get-Help *
Здесь первая запись расскажет вам, как использовать этот командлет. Вторая запись даст вам простое резюме конкретного командлета. Третья запись даст подробную информацию о соответствующем командлете. Четвертая запись будет содержать все, что показывает третий командлет, но добавит пример того, как использовать этот командлет. И, наконец, пятый командлет перечислит каждую команду, которая доступна для вашего использования.
3] Получить похожие команды
Чтобы найти команды аналогичного типа или содержащие в себе определенную фразу, вы можете использовать командлет Get-Command . Однако в нем не перечислен каждый командлет в PowerShell, поэтому вы используете некоторые конкретные фильтры. Вы можете использовать следующие команды:
Get-Command -Name Get-Command -CommandType
Первый командлет поможет вам найти командлет с определенной фразой, а второй – отфильтровать командлеты, выполняющие определенную функцию.
4] Поиск определенного файла
Если вам нужно найти определенный файл или каталог в определенном месте, вы можете использовать командлет Get-Item . Вы можете использовать его как
Get-Item
перечислить содержимое конкретного пути.
5] Прочитайте содержимое файла
Если вам нужно прочитать содержимое файла, вы можете использовать команду Get-Content как
Get-Content
6] Прочтите информацию обо всех службах на компьютере .
Вы можете использовать командлет Get-Service , чтобы перечислить все службы, запущенные или остановленные на вашем компьютере. Кроме того, вы можете использовать следующие связанные командлеты для выполнения их соответствующих функций:
Start-Service Стоп-Service Suspend-Service Resume-Service Рестарт-Сервис
7] Читайте информацию обо всех процессах на компьютере
Подобно командлету Get-Service, вы можете использовать командлет Get-Process , чтобы вывести список всех процессов, запущенных на вашем компьютере.В качестве альтернативы вы можете использовать следующие связанные командлеты для выполнения соответствующих функций:
Запуск процесса Stop-Process Служба ожидания
8] Настройка политики выполнения
Хотя в PowerShell поддерживается создание и выполнение сценариев, существуют ограничения для каждого из них в рамках некоторых мер безопасности. Вы можете переключить уровень безопасности на любой из 4 уровней. Вы можете использовать командлет Set-ExecutionPolicy , а затем любой из уровней безопасности, указанных в
Set-ExecutionPolicy Неограниченный Set-ExecutionPolicy Все подписано Set-ExecutionPolicy Удаленная подпись Set-ExecutionPolicy Restricted
Здесь политики сверху вниз варьируются от самого низкого до самого высокого уровня безопасности.
9] Скопируйте файл или каталог
Пользователь может использовать командлет Copy-Item для копирования одного файла или каталога в другое место назначения. Синтаксис этого командлета
Copy-Item "E: \ TWCTest.txt" -Destination "D: \"
10] Удалить файл или каталог
Подобно командлету Copy-Item, пользователь может использовать командлет Copy-Item для копирования одного файла или каталога в другое место назначения. Синтаксис этого командлета
Remove-Item "E: \ TWCTest.txt"
У вас есть другие полезные командлеты, которыми вы можете поделиться со всеми нами? Не стесняйтесь записывать их в поле для комментариев ниже.
Командлетов в Windows PowerShell много поэтому сегодня я предлагаю рассмотреть небольшой список наиболее полезных и часто используемых командлетов с кратким описанием того, что они умеют. Данный справочник поможет Вам быстрей найти интересующую Вас команду Windows PowerShell и ориентирован он на начинающих системных администраторов.
Ранее в материале «Основы Windows PowerShell» мы с Вами узнали, что вообще такое PowerShell, а также рассмотрели основные его возможности. Поэтому данная статья подразумевает, что Вы уже имеете представление о том, что такое Windows PowerShell и сейчас мы не будем заострять на этом внимание, а сразу перейдем к рассмотрению командлетов.
Конечно же, ниже представлен неполный перечень командлетов, так как их на самом деле очень много, полный список командлетов в системе Вы можете получить, выполнив следующую команду в оболочке PowerShell.
Get-Command -CommandType cmdlet
Если Вы, выполнив вышеуказанную команду у себя на компьютере, не нашли командлет из представленного ниже списка (или тот который Вам нужен), то скорей всего у Вас не установлен необходимый модуль. Модули PowerShell для соответствующих ролей и компонентов сервера устанавливаются автоматически одновременно с ними. В случае если Вы хотите воспользоваться данными модулями на системе без установленных ролей и компонентов, то Вы всегда можете установить соответствующие «Средства удаленного администрирования сервера», которые добавляют не только оснастки управления, но и необходимые командлеты. Например, для того чтобы администрировать Active Directory с помощью Windows PowerShell на компьютере, который не является контроллером домена, необходимо установить модуль Active Directory для Windows PowerShell (RSAT-AD-PowerShell).
Примечание! Данный справочник составлен на основе командлетов версии PowerShell 5.0 в операционной системе Windows Server 2016.
Содержание
- Полезные командлеты Windows PowerShell
- Работа с переменными
- Форматирование в Windows PowerShell
- Импорт и экспорт
- Работа с сетью в Windows PowerShell
- Работа с элементами
- Командлеты для работы с Active Directory (AD)
- Работа с Hyper-V
- Работа с фоновыми заданиями
- Работа с объектами
- Командлеты PowerShell для удаленного управления
- Работа со службами и процессами
- Работа с компьютером
- Работа с контентом
- Другие командлеты Windows PowerShell
В данном разделе я перечислю командлеты PowerShell, которые Вы точно будете использовать.
- Get-Help – показывает справку по командлету, функции и общую справку по Windows PowerShell. Справка бывает нескольких типов: краткая, детальная, полная и вывод только примеров;
- Update-Help — загружает и устанавливает новые файлы справки, т.е. обновление справки;
- Get-Command – командлет поиска нужной команды, можно искать как по глаголу, так и по существительному, также возможно использование маски, если Вы не знаете точное наименование глагола или существительного;
- Get-Alias – показывает псевдонимы, все или конкретной команды;
- Get-PSDrive – показывает подключенные диски;
- Get-Member – выводит свойства и методы, которые есть у объекта;
- Get-WindowsFeature – выводит сведения о доступных ролях и компонентах сервера;
- Install-WindowsFeature (эквивалентен Add-WindowsFeature) — устанавливает роли или компоненты на указанный сервер;
- Uninstall-WindowsFeature (эквивалентен Remove-WindowsFeature) – удаляет роли или компонента сервера;
- Get-History — возвращает список команд, введенных в ходе текущей сессии.
Работа с переменными
В PowerShell для того чтобы создать переменную, задать ей значение или получить это значение обычно используют знак доллар $ (коротко и удобно), но для этих целей существуют специальные командлеты.
- Get-Variable – выводит список переменных и их значения (или одну указанную переменную);
- New-Variable – создает новую переменную;
- Set-Variable – задает значение переменной. Если переменная с указанным именем не существует, то она будет создана;
- Clear-Variable — удаляет значение переменной;
- Remove-Variable — удаляет переменную и ее значение.
Заметка! Программирование на языке PowerShell.
Форматирование в Windows PowerShell
В Windows PowerShell существует набор командлетов, которые предназначены для форматирования вывода результата работы командлета. Они позволяют пользователю отобразить результат в том виде, в котором ему удобно просматривать данный результат.
- Format-List – вывод результата команды в формате списка свойств, где на каждой новой строке отдельное свойство;
- Format-Table — вывод результата команды в виде таблицы;
- Format-Wide — вывод результата команды в виде широкой таблицы, в которой отображается только одно свойство каждого объекта;
- Format-Custom – в данном случае форматирование вывода происходит с использованием пользовательского представления.
Импорт и экспорт
PowerShell позволяет импортировать и экспортировать данные в разных распространенных форматах, например, CSV или XML, а также перенаправлять вывод результата работы команды во внешний файл или на принтер.
- Export-Csv – экспорт данных в формат CSV;
- Import-Csv – импортирует данные из CSV файла;
- Export-Clixml — экспорт данных в формат XML;
- Import-Clixml — импортирует файл CLIXML и создает соответствующие объекты в оболочке Windows PowerShell;
- Out-File — посылает вывод результата работы командлета во внешний файл (например, в TXT);
- Out-Printer — вывод результата работы команды на принтер;
- Import-Module — добавляет модули в текущей сессии.
Работа с сетью в Windows PowerShell
Для администрирования сети в Windows PowerShell существуют такие командлеты как:
- Disable-NetAdapter – командлет отключает сетевой адаптер;
- Enable-NetAdapter – данный командлет включает сетевой адаптер;
- Rename-NetAdapter — переименовывает сетевой адаптер;
- Restart-NetAdapter — перезапускает сетевой адаптер;
- Get-NetIPAddress – выводит информацию о конфигурации IP-адреса;
- Set-NetIPAddress — изменяет конфигурацию IP-адреса;
- New-NetIPAddress — создает и настраивает IP-адрес;
- Remove-NetIPAddress — удаляет IP-адрес и его конфигурацию;
- Get-NetRoute — выводит таблицу маршрутизации IP;
- Set-NetRoute — изменяет таблицу маршрутизации IP;
- New-NetRoute — создает запись в таблице маршрутизации IP;
- Remove-NetRoute — удаляет одну или несколько записей (IP маршрутов) из таблицы маршрутизации IP;
- Get-NetIPv4Protocol — выводит информацию о конфигурации протокола IPv4;
- Get-NetIPv6Protocol — выводит информацию о конфигурации протокола IPv6;
- Get-NetIPInterface — выводит информацию о свойствах интерфейса IP;
- Get-NetTCPSetting — показывает информацию о настройках и конфигурации TCP;
- Test-Connection – командлет посылает ICMP пакеты к одному или нескольким компьютерам, т.е. «пингует» компьютеры.
Заметка! Описание и назначение ролей сервера в Windows Server 2016.
Работа с элементами
В Windows PowerShell есть командлеты, которые умеют работать с элементами, под элементами здесь можно понимать: файлы, папки, ключи реестра и так далее.
- Clear-Item — очищает содержимое элемента, но не удаляет сам элемент;
- Copy-Item – копирует элемент;
- Get-Item — получает элемент в указанном месте;
- Invoke-Item — выполняет действие по умолчанию над указанным элементом;
- Move-Item – перемещает элемент;
- New-Item – создает новый элемент;
- Remove-Item – удаляет указанные элементы;
- Rename-Item — переименовывает элемент в пространстве имен поставщика Windows PowerShell;
- Set-Item — изменяет элемент;
- Get-ChildItem — возвращает элементы и дочерние элементы в одном или нескольких определенных местах;
- Get-Location – выводит информацию о текущем местонахождении.
Командлеты для работы с Active Directory (AD)
Windows PowerShell, конечно же, позволяет работать со службой каталогов Active Directory. Для этих целей существует немало командлетов, вот некоторые из них:
- New-ADUser – создание нового пользователя в Active Directory;
- Get-ADUser – выводит информацию о пользователях Active Directory;
- Set-ADUser — изменяет пользователя Active Directory;
- Remove-ADUser — удаляет пользователя Active Directory;
- New-ADGroup – командлет создает группу в Active Directory;
- Get-ADGroup – выводит информацию о группе или выполняет поиск, чтобы получить несколько групп из Active Directory;
- Set-ADGroup – командлет изменяет группу в Active Directory;
- Remove-ADGroup — удаление группы в Active Directory;
- Add-ADGroupMember — командлет добавляет учетные записи пользователей, компьютеров или групп в качестве новых членов группы Active Directory;
- Get-ADGroupMember — выводит информацию о членах группы Active Directory;
- Remove-ADGroupMember — удаление элементов из группы Active Directory;
- Set-ADAccountPassword — сброс пароля учетной записи Active Directory;
- Disable-ADAccount — отключает учетную запись Active Directory.
- Enable-ADAccount — включает учетную запись Active Directory;
- Unlock-ADAccoun — разблокирует учетную запись Active Directory;
- New-ADComputer — создание новой учетной записи компьютера в Active Directory;
- Get-ADComputer — выводит информацию об одном или нескольких компьютерах в Active Directory;
- Set-ADComputer — изменение учетной записи компьютера в Active Directory;
- Remove-ADComputer — удаление компьютера из Active Directory.
Работа с Hyper-V
Для работы с Hyper-V в Windows PowerShell существует много командлетов, вот небольшой перечень:
- New-VM — создание новой виртуальной машины;
- Set-VM — настройка виртуальной машины;
- Start-VM — запуск виртуальной машины;
- Stop-VM — закрытие, выключение или сохранение виртуальной машины;
- Import-VM — импорт виртуальной машины из файла;
- Move-VM — перемещение виртуальной машины на новый Hyper-V хост;
- Remove-VM — удаление виртуальной машины;
- Rename-VM — переименование виртуальной машины;
- New-VHD — создание одного или нескольких новых виртуальных жестких дисков;
- Set-VHD – настройка виртуального жесткого диска;
- Test-VHD — тестирование виртуального жесткого диска на предмет обнаружения проблем, которые сделали бы его непригодным для использования;
- Add-VMDvdDrive — добавляет DVD диск к виртуальной машине;
- Remove-VMDvdDrive — удаляет DVD-диск из виртуальной машины;
- Add-VMHardDiskDrive — добавляет жесткий диск к виртуальной машине;
- Remove-VMHardDiskDrive — удаляет один или несколько виртуальных жестких дисков (VHD) из виртуальной машины;
- Add-VMNetworkAdapter — добавляет виртуальный сетевой адаптер на виртуальной машине;
- Remove-VMNetworkAdapter — удаляет один или несколько виртуальных сетевых адаптеров из виртуальной машины;
- Copy-VMFile — копирование файлов на виртуальную машину;
- Get-VMVideo – выводит информацию о настройках видео для виртуальных машин;
- Move-VMStorage — перемещение хранилища виртуальной машины.
Заметка! Описание компонентов сервера в Windows Server 2016.
Работа с фоновыми заданиями
В Windows PowerShell есть возможность запускать задачи в фоновом режиме, для того чтобы, не дожидаясь окончания работы команды (для случаев, когда задача выполняется долго), продолжать работать в текущей сессии. Для работы с фоновыми заданиями в PowerShell есть следующие командлеты:
- Start-Job – запустить фоновую задачу;
- Stop-Job – остановить фоновую задачу
- Get-Job – посмотреть список фоновых задач;
- Receive-Job – посмотреть результат выполнения фоновой задачи;
- Remove-Job – удалить фоновую задачу;
- Wait-Job – перевести фоновую задачу на передний план, для того чтобы дожидаться ее окончания.
Работа с объектами
Так как PowerShell работает с объектами, он позволяет выполнять некие действия над этими объектами, например:
- Measure-Object – командлет позволяет рассчитывать на основе свойств объектов такие числовые агрегирующие параметры как: минимальное, максимальное, среднее значение, сумму и количество. Например, Вы хотите узнать максимальный или средний размер файла в определенном каталоге, или просто узнать количество файлов (запущенных процессов, служб и так далее);
- Select-Object – с помощью данного командлета можно выбрать определенные объекты или свойства этих объектов, например Вы хотите выводить только название файла и его размер;
- Sort-Object — сортирует объекты по значениям свойств;
- Where-Object – командлет для того чтобы ставить условие для выборки объектов на основе значений их свойств;
- Group-Object – группирует объекты, которые содержат одинаковое значение для заданных свойств;
- ForEach-Object – перебор объектов с целью выполнения определенной операции над каждым из этих объектов.
Командлеты PowerShell для удаленного управления
С помощью Windows PowerShell можно выполнять команды не только на локальном компьютере, но и на одном или даже на нескольких удаленных компьютерах.
- Enter-PSSession — запускает интерактивный сеанс с удаленным компьютером;
- Exit-PSSession — завершает интерактивный сеанс с удаленным компьютером;
- New-PSSession — создает постоянное подключение к локальному или удаленному компьютеру;
- Remove-PSSession — закрывает один или несколько сеансов Windows PowerShell;
- Disconnect-PSSession — отсоединяется от сеанса;
- Connect-PSSession — подключается к отключенным сеансам;
- Get-PSSession — получает сеансы Windows PowerShell на локальных и удаленных компьютерах;
- Invoke-Command — выполняет команды на локальном и удаленных компьютерах.
Работа со службами и процессами
PowerShell, конечно же, умеет управлять службами и процессами в Windows, для этого существуют такие командлеты как:
- Get-Process – выводит информацию о запущенных процессах на компьютере;
- Start-Process – запускает один или несколько процессов на компьютере;
- Stop-Process — останавливает один или несколько запущенных процессов;
- Get-Service – выводит информацию о службах;
- Restart-Service – перезапускает службу;
- Start-Service – запускает службу;
- Stop-Service — останавливает службу;
- Suspend-Service – приостанавливает работу службы;
- Set-Service – с помощью данного командлета можно изменить свойства службы, например, описание, отображаемое имя и режим запуска. Также его можно использовать для запуска, остановки или приостановки службы.
Заметка! Установка файлового сервера (File Server) на Windows Server 2016.
Работа с компьютером
Windows PowerShell позволяет выполнять административные задачи для операционной системы и компьютера в целом, например, перезапустить операционную систему или переименовать компьютер.
- Restart-Computer – командлет перезапускает операционную систему (перезагружает компьютер);
- Stop-Computer – выключает компьютер;
- Rename-Computer – переименовывает компьютер;
- Checkpoint-Computer — создает точку восстановления системы на локальном компьютере;
- Restore-Computer — запускает восстановление системы на локальном компьютере;
- Disable-ComputerRestore — отключает функцию восстановления системы на указанном диске файловой системы;
- Enable-ComputerRestore — включает функцию восстановления системы на указанном диске файловой системы;
- Remove-Computer — удаляет локальный компьютер из домена;
- Get-EventLog – выводит информацию о событиях в журнале событий, или список журналов событий на локальном или удаленном компьютере;
- Clear-EventLog — удаляет записи из указанных журналов событий.
Работа с контентом
Для управления контентом, например, текстом в файле в Windows PowerShell существуют специальные командлеты, такие как:
- Get-Content – получает содержимое элемента (например, считывает файл);
- Add-Content – добавляет содержимое в заданные элементы, например, текст в файл;
- Clear-Content — удаляет содержимое элемента, но не удаляет сам элемент;
- Set-Content — записывает или заменяет содержимое в элемент с новым содержанием.
Другие командлеты Windows PowerShell
Также хотелось бы выделить следующие командлеты Windows PowerShell, которые наверняка Вам понадобятся и будут полезны.
- Get-ExecutionPolicy – с помощью данного командлета можно узнать действующую политику выполнения Windows PowerShell для текущего сеанса;
- Set-ExecutionPolicy – командлет изменяет политику выполнения Windows PowerShell;
- Write-Host – выводит информацию на экран (пишет текст);
- Read-Host – считывает строку ввода из консоли;
- Write-Warning – выводит предупреждающее сообщение;
- Write-Error – командлет объявляет ошибку и выводит ее в поток ошибок;
- Get-Date – возвращает текущую дату и время;
- Set-Date – командлет изменяет системную дату и время на компьютере.
Заметка! Курсы по SQL для начинающих на примере Microsoft SQL Server.
Вот мы с Вами и рассмотрели полезные и часто используемые командлеты Windows PowerShell, надеюсь, этот справочник будет Вам полезен, удачи!
Шпаргалка по PowerShell — это версия языка командной строки Windows, которая помогает вам легко выполнять и автоматизировать критически важные задачи в ваших системах. Но как выполнять эти задачи и максимально использовать PowerShell в своей системе Windows?
Мы составили шпаргалку по PowerShell, в которой описаны синтаксис PowerShell и все команды PowerShell, чтобы помочь вам оптимизировать PowerShell и даже подготовиться к собеседованиям.
Начнем с краткого введения в команды Windows 10 PowerShell.
Основы PowerShell
PowerShell — это кроссплатформенное и широко используемое решение для автоматизации задач, сочетающее в себе возможности оболочки командной строки, языка сценариев и структуры управления конфигурацией. PowerShell можно запускать на операционных системах Windows, Linux и macOS. В отличие от других доступных оболочек, которые только принимают и возвращают данные, PowerShell принимает и возвращает объекты .NET.
Эта оболочка имеет следующие возможности.
- Удобная история командной строки
- Широкие возможности, такие как завершение табуляции и предсказание команд
- Псевдонимы команд и параметров
- Система изменения команд
- Встроенная справочная система, подобная Unix man pages
Учитывая возможности любого языка сценариев, вы можете использовать PowerShell для автоматизации процессов и задач управления системой. Он позволяет создавать, тестировать и развертывать решения в средах CI/CD.
PowerShell построен на базе .NET Common Language Runtime (CLR), что означает, что все входные и выходные данные являются объектами .NET. Вам не придется разбирать текстовый вывод, чтобы получить из него информацию.
Язык сценариев PowerShell обладает следующими возможностями.
- Функции, классы, объекты и модули
- Простая система форматирования для обеспечения четкого вывода данных для повышения удобочитаемости
- Встроенная поддержка различных форматов данных, таких как CSV, JSON и XML
- Система типов для создания динамических типов
Теперь перейдем к некоторым полезным командам PowerShell.
Шпаргалка PowerShell по командам
Командлеты
Cmdlets — это внутренние команды PowerShell. Эти команды возвращают один или несколько объектов в конвейер, в конце которого мы упоминаем некоторые свойства объектов в следующей таблице, чтобы увидеть их значения, отображаемые на экране.
Команда | Описание |
|
Эта команда позволяет получить поддержку с помощью PowerShell. |
|
Эта команда предлагает вам список доступных PSDrives, таких как c, env, hklm, hkcu, alias и т.д. |
|
В любом реестре дочерние ключи — это подключи текущего ключа. Чтобы получить необходимые сведения, можно воспользоваться следующей командой. |
|
Выполните эту команду, чтобы рекурсивно перечислить все дочерние элементы текущего PSdrive, папки или ключа реестра. |
|
Используйте эту команду для включения скрытых папок (каталогов). |
|
Выполните любую из этих команд, чтобы получить список имен файлов и каталогов в текущей папке. |
|
Используйте эту команду, чтобы получить количество записей в коллекции объектов, возвращенных командой Get-Children. |
PSdrives
PSdrives — это коллекция объектов, сгруппированных вместе, чтобы к ним можно было получить доступ как к диску файловой системы. PSprovider» выполняет эту группировку.
По умолчанию сеанс PS может обращаться к нескольким PSdrives, включая c:, env:, alias: и HKLM:, где c: означает обычный диск c Windows; env: — это пространство переменных среды Windows; alias: — это коллекция псевдонимов команд; а HKLM — это ветка в реестре.
При любом сеансе PS пользователь попадает в свою домашнюю папку. Если вы хотите перейти из сеанса PS на другой диск PSdrive и получить информацию с этого диска, воспользуйтесь следующими командами:
Команды | Описание |
|
Символ подсказки изменится на «ENV:\>». Установите env, выполнив следующую команду:
|
|
Эта команда предоставит вам все переменные окружения. |
|
Используйте эту команду, чтобы получить переменные окружения «userprofile». |
|
Выполните следующую команду, чтобы изменить символ подсказки на » Alias». |
|
Выполните эту команду, чтобы получить все дочерние элементы всех псевдонимов. |
|
Используйте эту команду, чтобы снова получить приглашение «C:/>», вернувшись к диску по умолчанию. |
|
Выполните эту команду, чтобы узнать, что означает псевдоним «ls». |
Конвейеры
Cmdlets использует конвейеры для передачи объектов, но не потоков символов, как Unix. Символ конвейера — | (ASCII 124), за которым следует команда, обрабатывающая вывод, проходящий через конвейер. Конвейер состоит из следующих трех этапов.
Get-ChildItem *.txt | Where-Object length -lt 1000 | Sort-Object length
В следующей таблице приведены некоторые из основных команд конвейеров:
Команда | Описание |
|
Легко устанавливает значение свойства ‘lastwritetime.year’ на текущую дату и время, не влияя на содержимое файла. |
|
Предоставляет пустой результат |
|
Изменяет старые имена файлов и расширения файлов на новые |
|
Тривиальная команда переименования, вызывающая автоматическую переменную |
|
Если у передаваемого объекта $_ нет свойства (name), вы получите ошибку, так как параметр $_.name является null |
|
Отображает список имен всех файлов, присутствующих в текущей папке, отсортированных в алфавитном порядке. |
|
Перемещает все файлы в подкаталог папки |
|
Выдает сообщение об ошибке, что Move-Item не имеет входа |
Alias (Алиас)
Cmdlets поддерживают несколько псевдонимов. В следующей таблице приведены некоторые псевдонимы и их описания:
Команда | Описание |
|
Добавляет значение к файлу |
|
Поиск содержимого файла в массиве |
|
Изменение папки, ключа или диска PS |
|
Очищает консоль |
|
Удаление файлов |
|
Списки папок, ключей или дочерних элементов PSDrive |
|
Отправляет массив в консоль, конвейер или перенаправляет его в файл |
|
Обход каждого объекта в конвейере |
|
Форматирует таблицу с выбранными свойствами для каждого объекта в каждом столбце |
|
Форматирует свойства процесса по имени |
|
Обеспечивает псевдоним командлета |
|
Предоставляет вам команды только из текущей сессии |
|
Извлечение всех членов объекта |
|
Предоставляет свойства указанного элемента |
|
Получает текущее значение для указанного свойства при использовании параметра name |
|
Находит имена переменных сеансов |
|
Создает новый файл, каталог, символическую ссылку, ключ реестра или запись реестра. |
|
Выдает полный список всех запущенных процессов |
|
Предоставляет местоположение текущего каталога или ключа реестра |
|
Переименовывает старое имя элемента в новое имя |
|
Удаляет указанный каталог, файлы или ключи реестра |
|
Удаляет указанную переменную |
|
Приостанавливает деятельность на определенный период времени |
Операторы
Арифметические операторы
Оператор | Описание | Пример |
+ | Складывает целые числа; объединяет | 6 + 2 |
строки, массивы и хэш-таблицы. | «file» + «name»
@(1, «one») + @(2.0, «two») @{«one» = 1} + @{«two» = 2} |
|
+ | Делает число из объекта | 123 |
— | Вычитание одного значения из другого | 6 — 2 |
— | Вычисляет противоположное число | — -6 |
(Get-Date).AddDays(-1) | ||
* | Умножение чисел или копирование строк и массивов заданное количество раз | 6 * 2 |
@(«!») * 4 | ||
«!» * 3 | ||
/ | Делит два значения | 6 / 2 |
% | Modulus — возвращает остаток от операции деления | 7 % 2 |
-band | Побитовое И | 5 -band 3 |
-bnot | Побитовое НЕ | -bnot 5 |
-bor | Побитовое ИЛИ | 5 -bor 0x03 |
-bxor | Побитовое XOR | 5 -bxor 3 |
-shl | Сдвигает биты влево | 102 -shl 2 |
-shr | Сдвигает биты вправо | 102 -shr 2 |
Приоритет оператора
Приоритет | Оператор | Описание |
1 | () | Круглые скобки |
2 | — | Для отрицательного числа или унарного оператора |
3 | *, /, % | Для умножения и деления |
4 | +,- | Для сложения и вычитания |
5 | -band, -bnot, -bor, -bxor, -shr, and -shl | Для побитовых операций |
Операторы присваивания
Оператор | Описание |
= | Устанавливает значение переменной на указанное значение |
+= | Увеличивает значение переменной на указанное значение или добавляет указанное значение к существующему значению |
-= | Уменьшает значение переменной на заданную величину |
*= | Умножает значение переменной на указанное значение или добавляет указанное значение к существующему значению |
/= | Делит значение переменной на заданное значение |
%= | Делит значение переменной на заданное значение, а затем присваивает переменной остаток (модуль). |
++ | Увеличивает значение переменной, присваиваемого свойства или элемента массива на 1. |
— | Уменьшает значение переменной, присваиваемого свойства или элемента массива на 1. |
Операторы сравнения
Тип | Оператор | Сравнительный тест |
Равенство | -eq | равно |
-ne | не равно | |
-gt | больше, чем | |
-ge | больше или равно | |
-lt | меньше чем | |
-le | меньше чем или равно | |
Соответствие | -like | строка соответствует шаблону подстановки |
-notlike | строка не соответствует шаблону | |
-match | строка соответствует regex-шаблону | |
-notmatch | строка не соответствует regex-шаблону | |
Замена | -replace | заменяет строки, соответствующие шаблону regex |
Сдерживание | -contains | коллекция содержит значение |
-notcontains | коллекция не содержит значения | |
-in | значение находится в коллекции | |
-notin | значение отсутствует в коллекции | |
Тип | -is | оба объекта имеют одинаковый тип |
-isnot | объекты разного типа |
Логические операторы
Оператор | Описание | Пример |
-and | Логическое И. TRUE, когда оба утверждения истинны. | (1 -eq 1) -and (1 -eq 2)
FALSE |
-or | Логическое ИЛИ. TRUE, когда любое из утверждений TRUE. | (1 -eq 1) -or (1 -eq 2)
TRUE |
-xor | Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ. ИСТИНА, когда только одно утверждение является ИСТИНОЙ. | (1 -eq 1) -xor (2 -eq 2)
FALSE |
-not | Логическое не. Отрицает утверждение, которое следует за ним. | -not (1 -eq 1)
FLASE |
! | То же, что и -нет | !(1 -eq 1)
FALSE |
Оператор перенаправления
Оператор | Описание | Синтаксис |
> | Отправить указанный поток в файл | n> |
>> | Добавить указанный поток в файл | n>> |
>&1 | Перенаправляет указанный поток на поток Success | n>&1 |
Операторы типа
Оператор | Описание | Пример |
-isNot | Возвращает TRUE, если входные данные не являются экземпляром указанного.NET типа. | (get-date) -isNot [DateTime]
FALSE |
-as | Преобразует входные данные в указанный тип .NET. | «5/7/07» -as [DateTime]
Monday, May 7, 2007 00:00:00 |
Другие операторы
Оператор | Описание |
() Оператор группировки | Позволяет переопределить старшинство операторов в выражениях |
&() Оператор подвыражения | Выдает результат одного или нескольких утверждений |
@( ) Оператор подвыражения массива | Возвращает результаты одного или нескольких операторов в виде массивов. |
& Фоновый оператор | Конвейер перед & выполняется этой командой в задании Powershell. |
[] Cast оператор | Преобразует объекты к определенному типу. |
Регулярные выражения
Регулярное выражение — это шаблон, который используется для сопоставления текста, включающего литеральные символы, операторы и другие конструкции. Регулярные выражения PowerShell по умолчанию не чувствительны к регистру.
Метод | Чувствительность к случаю |
Select-String | use -CaseSensitive switch |
switch statement | use the -casesensitive option |
operators | prefix with ‘c’ (-cmatch, -csplit, or -creplace) |
Литералы символов
Регулярное выражение может быть литеральным символом или строкой.
Группы символов
Они позволяют сопоставить любое количество символов за один раз, в то время как [^character group] сопоставляет только символы, не входящие в группу.
Диапазон символов
Шаблон также может быть диапазоном символов. Символы могут быть алфавитными [A-Z], цифровыми [0-9] или даже [ -~] (все печатаемые символы) в формате ASCII.
Числа
Класс символов \d будет соответствовать любой десятичной цифре. И наоборот, \D будет соответствовать любой недесятичной цифре.
Словесный символ
Класс символов \w будет соответствовать любому символу слова [a-zA-Z_0-9]. Чтобы подобрать любой несловосочетаемый символ, используйте \W.
Подстановочный знак
Точка (.) является символом подстановки в регулярных выражениях. Он будет соответствовать любому символу, кроме новой строки (\n).
Пробел
Пробельные символы сопоставляются с помощью класса символов \s. Любой не пробельный символ сопоставляется с помощью \S. Буквальные символы пробела ‘ ‘ также могут быть использованы.
Экранирование символов
Обратная косая черта (\) используется для экранирования символов, чтобы механизм регулярных выражений не разбирал их.
Следующие символы зарезервированы: []().\^$|?*+{}.
Подстановка в регулярном выражении.
Регулярные выражения с оператором -replace позволяют динамически заменять текст с помощью захваченного текста.
<input> -replace <original>, <substitute>
Управление потоком
ForEach-Object
ForEach-Object — это командлет, который позволяет выполнять итерации по элементам в конвейере, например, с помощью однострочных команд PowerShell. ForEach-Object будет передавать объекты по конвейеру.
Хотя параметр Module команды Get-Command принимает несколько значений, которые являются строками, он будет принимать их только через конвейерный ввод с помощью имени свойства или ввода параметра.
Если вы хотите передать две строки по значению в Get-Command для использования с параметром Module, используйте команду ForEach-Object:
$ComputerName = 'DC01', 'WEB01' foreach ($Computer in $ComputerName) { Get-ADComputer -Identity $Computer }
For
Цикл «for» выполняет итерации, пока заданное условие истинно.
Например:
for ($i = 1; $i -lt 5; $i++) { Write-Output "Sleeping for $i seconds" Start-Sleep -Seconds $i }
Do
В PowerShell существует два различных цикла «do». Do Until выполняется, пока заданное условие ложно.
Пример 1:
$number = Get-Random -Minimum 1 -Maximum 10 do { $guess = Read-Host -Prompt "What's your guess?" if ($guess -lt $number) { Write-Output 'Too low!' } elseif ($guess -gt $number) { Write-Output 'Too high!' } } until ($guess -eq $number)
Пример 2:
$number = Get-Random -Minimum 1 -Maximum 10 do { $guess = Read-Host -Prompt "What's your guess?" if ($guess -lt $number) { Write-Output 'Too low!' } elseif ($guess -gt $number) { Write-Output 'Too high!' } } while ($guess -ne $number)
While
Подобно циклу Do While, цикл While выполняется до тех пор, пока заданное условие истинно. Однако разница заключается в том, что цикл While оценивает условие в верхней части цикла перед выполнением любого кода. Таким образом, он не выполняется, если условие оценивается как ложное.
Например:
$date = Get-Date -Date 'November 22' while ($date.DayOfWeek -ne 'Thursday') { $date = $date.AddDays(1) } Write-Output $date
Переменные
PowerShell позволяет хранить все типы значений. Например, он может хранить результаты команд и элементы командных выражений, такие как имена, пути и параметры. Вот некоторые из различных переменных PowerShell.
Переменные, созданные пользователем: Они создаются и поддерживаются пользователем. Переменные, которые вы создаете в командной строке PowerShell, будут существовать только до тех пор, пока открыто окно PowerShell. Когда вы закрываете окно PowerShell, эти переменные удаляются. Если вы хотите сохранить переменную, вам необходимо добавить ее в свой профиль PowerShell. Вы можете создавать переменные и объявлять их с тремя различными диапазонами: глобальным, скриптовым или локальным.
Автоматические переменные: Эти переменные хранят состояние PowerShell и создаются PowerShell. Только PowerShell может изменять их значения по мере необходимости для поддержания точности. Пользователи не могут изменять значение этих переменных. Например, переменная $PSHOME будет хранить путь к директории установки PowerShell.
Переменные предпочтений: Эти переменные хранят предпочтения пользователя для PowerShell и создаются PowerShell. Эти переменные заполнены значениями по умолчанию и могут быть изменены пользователями. Например, переменная $MaximumHistoryCount задает максимальное количество записей в истории сеансов.
Чтобы создать новую переменную, необходимо использовать оператор присваивания и присвоить переменной значение. Объявлять переменную перед ее использованием не нужно. Значение по умолчанию для всех переменных — $null.
Например:
$MyVariable = 1, 2, 3 $MyVariable
Функция
Именование функции
Для именования функции используйте имя регистра Паскаля с утвержденным глаголом и существительным в единственном числе. Список утвержденных глаголов можно получить, выполнив Get-Verb:
Get-Verb | Sort-Object -Property Verb
Создание простой функции
Для создания простой функции используйте ключевое слово function, за которым следует имя функции. Затем используйте открытую и закрывающую фигурные скобки. Функция будет выполнять код, содержащийся в этих фигурных скобках.
Например:
function Get-Version { $PSVersionTable.PSVersion }
Работа с модулями
Модуль — это пакет, содержащий объекты PowerShell, такие как команды, провайдеры, функции, рабочие процессы, значения переменных и псевдонимы. Элементы пакета можно реализовать в сценарии PowerShell, скомпилированной библиотеке DLL или и в том, и в другом. PowerShell автоматически импортирует модули при первом запуске любой команды в установленном модуле. Вы можете использовать команды в модуле без настройки или конфигурации профиля.
Как использовать модуль
Чтобы использовать любой модуль, его необходимо сначала установить. Затем найдите команду, которая поставляется вместе с модулем, и используйте ее.
Установка модуля
Если вы получили модуль в виде папки, установите его перед использованием в командной строке PowerShell. Некоторые модули являются предустановленными. Вы можете использовать следующую команду для создания каталога Modules для текущего пользователя:
New-Item -Type Directory -Path $HOME\Documents\PowerShell\Modules
Скопируйте всю папку модуля в каталог Modules. Для копирования папки можно использовать любой метод, включая проводник Windows, Cmd.exe и PowerShell.
Поиск установленных модулей
Выполните следующие действия, чтобы найти модули, установленные в местоположении модулей по умолчанию (не импортированные).
Get-Module -ListAvailable
Поиск команд в модуле
Выполните следующую команду, чтобы найти команды модуля:
Get-Command -Module <module-name> Get-Command -Module Microsoft.PowerShell.Archive
Импортирование модуля
Выполните следующую команду с нужным именем модуля:
Import-Module <module-name>
Удаление имени модуля
Вы можете выполнить следующую команду с нужным именем модуля:
Remove-Module <module-name>
Просмотр расположения модулей по умолчанию
Используйте следующую команду для просмотра расположения модулей по умолчанию:
$Env:PSModulePath
Добавление местоположения модуля по умолчанию
Вы можете использовать следующий формат команды:
$Env:PSModulePath = $Env:PSModulePath + ";<path>"
Добавление местоположения модуля по умолчанию в Linux или macOS
Используйте следующее, чтобы выполнить ту же команду, что и выше, только в Linux или macOS:
$Env:PSModulePath += ":<path>"
Хеш-таблицы
Хеш-таблица — это сложная структура данных для хранения данных в виде пар ключ-значение. Мы также называем хэш-таблицу словарем или ассоциативным массивом. Чтобы понять, что такое хэш-таблица, рассмотрим серию IP-адресов и соответствующие имена компьютеров. В хэш-таблице эти данные хранятся в виде пар ключ-значение, где IP-адреса обозначают ключи, а имена компьютеров — соответствующие им значения.
Синтаксис хэш-таблицы выглядит следующим образом:
@{ <name> = <value>; [<name> = <value> ] ...}
Синтаксис упорядоченного словаря выглядит следующим образом:
[ordered]@{ <name> = <value>; [<name> = <value> ] ...}
Создание хэш-таблиц
Если вы хотите создать хэш-таблицу, выполните следующие действия:
- Начните хэш-таблицу со знака at (@) и заключите ее в фигурные скобки ({}).
- Хэш-таблица должна содержать хотя бы одну пару ключ-значение, поэтому вводите данные после создания хэш-таблицы.
- Отделите ключ от его значения с помощью знака равенства (=).
- Разделяйте пары ключ/значение в хэш-таблице точкой с запятой (;).
- Заключите пробел между ключами в кавычки. Значения должны быть допустимыми выражениями PowerShell. Также заключайте строки в кавычки, даже если между ними нет пробелов.
- Сохраните хэш-таблицу как переменную, чтобы эффективно управлять ею.
- При назначении упорядоченной хэш-таблицы переменной поместите атрибут [ordered] перед символом @. Если поместить его перед именем переменной, команда не выполнится.
Например:
$hash = @{} $hash = @{ Number = 1; Shape = "Square"; Color = "Blue"} [hashtable]$hash = [ordered]@{ Number = 1; Shape = "Square"; Color = "Blue"} $hash
Добавление и удаление ключей и значений
Чтобы добавить ключи и значения в хэш-таблицу, используйте следующий формат команды:
$hash[«<key>»] = «<value>»
Например, вы можете добавить ключ «Time» со значением «Now» в хэш-таблицу с помощью следующего формата оператора:
$hash["Time"] = "Now"
или
$hash.Add("Time", "Now")
Или вы можете удалить ключ с помощью этого выражения:
$hash.Remove("Time")
Асинхронная обработка событий
Эти команды позволяют регистрировать и отменять подписки на события и выводить список существующих подписок. Вы также можете перечислить ожидающие события и обработать или удалить их по желанию.
Команды PowerShell для обработки событий
Имя командлета обработки событий | Описание |
Register-ObjectEvent | Этот командлет регистрирует подписку на события для событий, генерируемых объектами .NET |
Register-WmiEvent | Регистрирует подписку на события для событий, генерируемых объектами WMI |
Register-EngineEvent | Регистрирует подписку на события для событий, генерируемых самим PowerShell |
Get-EventSubscriber | Получает список зарегистрированных подписок на события в сессии |
Unregister-Event | Удаляет одну или несколько зарегистрированных подписок на события |
Wait-Event | Ожидает наступления события. Эта команда может ждать определенного события или любого события. Она также позволяет указать тайм-аут, ограничивающий время ожидания события. По умолчанию ожидание длится вечно. |
Get-Event | Получает ожидающие необработанные события из очереди событий |
Remove-Event | Удаляет ожидающее событие из очереди событий |
New-Event | Эта команда вызывается в сценарии, чтобы позволить сценарию добавлять свои собственные события в очередь событий |
Шпаргалка по PowerShell: заключение
В итоге? Шпаргалка по PowerShell — это универсальный справочник по синтаксису и командам PowerShell. В этой шпаргалке по командам Windows PowerShell мы рассмотрели все основы, чтобы помочь даже новичкам сориентироваться в PowerShell.
Как и в любом другом языке программирования, вы можете использовать переменные и операторы, создавать псевдонимы и функции и даже поддерживать управление потоком.
Если вы готовитесь к предстоящему собеседованию, держите эту шпаргалку по PowerShell 5.0 под рукой для быстрого ознакомления с простыми примерами.
Хотите расширить свои знания о командной строке Windows?
Часто задаваемые вопросы
1. Как получить список команд PowerShell?
Вы можете использовать команду get-command.
2. Сколько существует команд PowerShell?
В PowerShell существует более 200 команд.
3. Как изучить PowerShell для начинающих?
Вы можете воспользоваться вводным руководством Microsoft по PowerShell. Оно содержит простой язык и простые примеры для лучшего понимания.
4. Является ли Windows PowerShell тем же самым, что и командная строка?
В следующей таблице приведены основные различия между PowerShell и командной строкой:
PowerShell | Командная строка |
Введен в 2006 году | Введен в 1981 году |
Работает как с пакетными командами, так и с командами PowerShell | Работает только с пакетными командами |
Позволяет создавать псевдонимы для команд или сценариев | Не поддерживает создание псевдонимов команд |
Позволяет передавать вывод команды другим командам. | не позволяет передавать вывод команды другим командам. |
Вывод осуществляется в виде объекта | Вывод — просто текст |
Можно выполнять последовательность команд в рамках сценария | Требуется, чтобы одна команда завершилась раньше другой |
Имеет библиотеки для программирования, так как построен на .net framework. | Отсутствие библиотек программирования |
Бесшовная интеграция с WMI | Требуется внешний плагин для взаимодействия с WMI |
Поддерживает системы Linux | Не поддерживает системы Linux |
Выполняет все типы программ | Запускает только программы консольного типа |
5. Как сделать командную строку по умолчанию вместо PowerShell?
Откройте Настройки > Персонализация > Панель задач. Теперь установите опцию «Заменить Command Prompt на Windows PowerShell» в меню, когда я нажимаю правой кнопкой мыши на кнопку «Пуск» или нажимаю клавиши Windows + X» в положение «Выкл».
Возможно вам так же будет интересно:
Скрипты Windows PowerShell для работы с Active Directory
Most of us prefer PowerShell due to its automation capabilities. It’s a command-line shell with a fully developed scripting language. You can use the built-in cmdlets or write your own script to automate the administrative tasks of Windows and other compatible operating systems. It allows you to do everything that you can do with the GUI apps and more.
However, mastering the functionality and flexibility of PowerShell involves a steep learning curve. If you are just getting started with PowerShell, here are the essential commands you can learn to master this scripting language in the long run.
1. Get-Help
Get-Help, as the name suggests, is part of PowerShell’s integrated help system. It helps you find necessary information for the command, concepts, and functions, identify alias, scripts, and more.
To get help for a PowerShell cmdlet, you need to use the Get-help cmdlet followed by a cmdlet name. For example, to view the synopsis and syntaxes associated with the get-process cmdlet, type:
Get-Help Get-Process
This command can read both comment-based and XML-based help provided by the function author.
Alternatively, you can use the Get-Help -online command to get help for a PowerShell cmdlet online. For example, to view Microsoft’s online documentation for the Get-Content cmdlet, type:
Get-Help Get-Content -online
2. Get-Process
The Get-Process command helps you retrieve and show a list of all the active system processes with their identifiers (IDs). You can use it as an efficient alternative to Windows Task Manager to view, stop and restart system processes.
For example, if you need to stop the GameBar process, first you need to find the process ID associated with it. So, type:
Get-Process
This command will show all the running system processes. Next, find the ID associated with the process you want to stop. To stop the process, type:
Get-Process -ID 20496 | Stop-Process
Here -ID 20496 is the ID of the process (GameBar) you want to stop.
3. Start-Process
You can use the Start-Process cmdlet in PowerShell to start one or more processes on a local computer. To use the cmdlet, type Start-Process followed by the process name. For example, if you want to start a new notepad process, type:
Start-Process notepad
Additionally, you can use the parameters of Start-Process to specify options. For example, if you need to launch a process as administrator, type:
Start-Process -FilePath "notepad" -Verb runAs
4. Get-Command
The Get-Command lets you view all the PowerShell commands installed on your computer. Similar to Get-Help, you can use the Get-Command followed by a search query to find commands for a specific feature.
Since the Get-Command displays all the commands, you can specify parameters to find features with a specific name and CommandType. For example, to find cmdlets (CommandTypes) that start with A (Name), type:
Get-Command -Name A* -CommandType cmdlet
Alternatively, type Get-Help Get-Command -Examples to view more examples.
5. Get-Service
The Get-Service cmdlet lets you view your computer’s status and list of services. By default, the Get-Service command returns all the (stopped and running) services.
You can use the parameters to specify and find services depending on their status, name, and dependent services. For example, to view all the services starting with the name Win, type:
Get-Service -Name "Win*"
6. Get-ChildItem
You can use PowerShell to search through directories. The Get-ChildItem command is a handy cmdlet to look for folders and files and quickly perform content-based searches without using File Explorer.
To view all the top-level folders in the C:\ directory, type:
Get-ChildItem "C:\"
Additionally, use the -Path parameter to view a particular folder, sub-folders, and content. For example, to view all the sub-folders and files in the Programs Files folder, type:
Get-ChildItem -Path "C:\Program Files"
Additionally, use the —Recurse parameter to view all the files in the specified folder and the -Name parameter to view item names in a directory.
Get-ChildItem -Path "C:\Program Files\Fodler_Name" -Recurse | Select FullName
In the above command, replace sub-folder with the folder name to view its content.
7. Copy-Item
The Copy-Item cmdlet lets you copy-paste files and folders and their contents to a different directory. To copy files and folders, type Copy-Item followed by the source —Path, -Destination parameter, and destination address. For example, to copy E:\Folder1 and its contents to E:\Folder2, type:
Copy-Item "E:\Folder1" -Destination "E:\Folder2" -Recurse
Note that the -Recurse parameter in the above command is responsible for moving all the folder contents. Without it, PowerShell will only copy the top-level folder (Folder1) and files specified in the command.
8. Move-Item
Similarly, to move an item, you can use the Move-Item cmdlet. For example, to move the folder, files, sub-folders, and all its contents to your specified destination, type:
Move-Item -Path "E:\Folder1" -Destination "E:\Folder2"
9. Remove-Item
The Remove-Item cmdlet lets you delete files, folders, functions, and other data types from the specified directory. For example, to delete the Test.txt file in the E:\Folder1 folder, type:
Remove-Item E:\Folder1\Test.txt
10. Get-Content
The Get-Content cmdlet lets you view the content of an item item without using a text editor. For example, to retrieve the contents of the Test.txt file, type:
Get-Content "E:\Folder1\Test.txt"
You can further specify the content length to view using the -TotalCount parameter.
11. Clear-Content
You can use the Clear-Content cmdlet to delete the contents of a specified file without deleting the file itself. Useful for task automation where you have a hard-coded file name but want to have a clean file each time the script runs.
To test the command, create a text file with some content in it. Next, type:
Clear-Content -Path "E:\Folder1\Test1.txt"
This will delete the contents of the file without deleting the file.
12. Set-ExecutionPolicy
The default execution policy in PowerShell is set to Restricted. This prevents the execution of malicious scripts in the PowerShell environment. However, when you execute a local PowerShell script, you may encounter the execution script is disabled on this system error.
The Set-ExecutionPolicy cmdlets let you change the security levels for script execution. To know your current execution policy, type:
Get-ExecutionPolicy
If you need to execute an unsigned script, in an elevated PowerShell prompt, type:
Set-ExecutionPolicy RemoteSigned
Other valid Set-ExecutionPolicy values include Restricted, AllSigned, and Unrestricted.
13. Set-Location
By default, PowerShell uses C:\Users\Username as the default working directory. The Set-Location cmdlet lets you set the current working directory to a specified location. Useful if you want to run a script or command from a specific location without having to specify the path each time.
For example, to set C:\Users\Username\Documents as the current working directory, type:
Set-Location "C:\Users\usrename\Documents"
This is a temporary measure as PowerShell will reset the working directory back to its default directory after the restart.
14. Export-CSV
If you want to export and present PowerShell output in a more organized way, you can use the Export-CSV cmdlet. It takes the output file for the specified command and converts it to a CSV file.
To test the command, try the following command:
Get-Process | Export-CSV PSprocess.csv
The above command will create a psporcess.csv file with all the active processes’ data.
15. ConvertTo-HTML
If you would rather create an HTML report, you can use the ConvertTo-HTML Cmdlet. To create an HTML report for all the running process on your PC, type :
Get-Process | ConvertTo-HTML > PSprocess.html
In the above command, psprocess is the name of the export file, and HTML is the extension. You can access the exported HTML file in the current working directory located at C:\Users\username.
16. Get-History
You can use the Up-Down arrow key to scroll through the recently executed commands in PowerShell. However, to view a list of all the recently executed commands in your current session at once, you can use the Get-History cmdlet.
It will display a list of all the recently executed commands with their ID. Useful if you want to view the complete context of the previously executed commands. To do this, type:
Get-History Id | fl
For example, to view the execution details such as status, start and end time, and duration for the third command, type:
get-history 3 | fl,
To rerun any command from the list, type:
Invoke-History followed by the command id
For example, type Invoke-History 3 to rerun a previously executed command without typing it again.
Additionally, use Clear-History to clear history for the current session.
Now that you have a basic idea of PowerShell commands, go ahead and explore our guide on best PowerShell Cmdlets to improve your Windows admin skills. Here, you can learn to work with data using cmdlets, format tables and list, and a quick overview of the Get-Member command.
PowerShell Commands to Streamline Your Tasks
PowerShell is known for its automation capabilities. This can help you automate hundreds of activities in your development work to save time and improve productivity.
While we have only covered the basic commands, try to explore the syntax, alias, and variables, functions available on many of these commands to master this highly efficient scripting language.