Описание тега powershell
Описание Windows PowerShell
Windows PowerShell - это оболочка командной строки и язык сценариев для Windows, заменяющий язык оболочки CMD.exe и пакетный язык. PowerShell также является механизмом автоматизации для Windows, который обеспечивает функциональность, аналогичную Windows Script Host и VBScript. Ядро PowerShell является хостом, позволяющим получать доступ к функциональности PowerShell из пользовательских приложений, включая другие хосты PowerShell, такие как PowerShell ISE, PowerGUI и PowerShellPlus.
PowerShell построен на основе Microsoft .NET Framework и предоставляет большую часть возможностей.NET Framework через язык сценариев PowerShell. А поскольку.NET позволяет взаимодействовать с COM, вы также можете создавать сценарии COM-объектов.
PowerShell 2.0 интегрирован с Windows 7 и Windows Server 2008 R2 и доступен для Windows XP SP3, Windows Server 2003 SP2 и Windows Vista SP1 и SP2. Powershell 5.0 в настоящее время является стандартом для Windows 10 и Server 2012 R2.
Пример использования
# List all processes using > 100 MB of PagedMemory in descending sort order
C:\PS> Get-Process | Where {$_.PagedMemorySize -gt 100MB} | Sort -Desc
# PowerShell can also evaluate expressions
C:\PS> "Hello World!"
Hello World!
C:\PS> (98.6 - 32) * 5/9
37
# Production orientation allows experimentation and confirmation
C:\PS> Get-ChildItem C:\Users\John *.bak -r |
Where {$_.LastWriteTime -gt (Get-Date).AddDays(-7)} |
Remove-Item -WhatIf
What if: Performing operation "Remove File" on Target "C:\Users\John\foo.bak"
C:\PS> Get-Process iexp* | Stop-Process -Confirm
Confirm
Are you sure you want to perform this action?
Performing operation "Stop-Process" on Target "iexplore (7116)".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is Y):
Общие Gotchas
Выполнение EXE через путь с пробелами требует цитирования пути и использования оператора вызова - &
C:\PS> & 'C:\Program Files\Windows NT\Accessories\wordpad.exe'
Вызов функций PowerShell не требует использования скобок или аргументов, разделенных запятыми. Функции PowerShell должны вызываться так же, как и командлет. Следующие примеры демонстрируют проблему, вызванную этой проблемой, например:
C:\PS> function Greet($fname, $lname) {"My name is '$lname', '$fname' '$lname'"}
C:\PS> Greet('James','Bond') # Wrong way to invoke this function!!
My name is '', 'James Bond' ''
Обратите внимание, что 'James' и 'Bond' упакованы как один аргумент (массив), который передается первому параметру. Правильный вызов:
C:\PS> Greet James Bond
My name is 'Bond', 'James' 'Bond'
Обратите внимание, что в PowerShell 2.0 использование Set-StrictMode -version 2.0
поймает этот тип проблемы.
Включение скриптов
Прежде чем вы сможете запустить пользовательские сценарии PowerShell (.ps1
файлы), вам нужно разрешить выполнение неподписанных скриптов. В противном случае попытка запустить скрипт выдаст ошибку:
.\test.ps1 : File C:\test.ps1 cannot be loaded because running
scripts is disabled on this system. For more information, see
about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\test.ps1
+ ~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
Вы можете установить политику выполнения скрипта с помощью Set-ExecutionPolicy
командлет:
# Allow scripts to be run by all users. This command requires admin privileges
Set-ExecutionPolicy Unrestricted
# Allow scripts to be run by the current user. This does not require special privileges
Set-ExecutionPolicy Unrestricted -Scope CurrentUser
Ресурсы