Найдем все команды PowerShell и приложения Windows со словом process :
PS C:\Users\angor> Get-Command *process*
CommandType Name ModuleName
----------- ---- ----------
Cmdlet Debug-Process Microsoft.Power...
Cmdlet Get-Process Microsoft.Power...
Cmdlet Start-Process Microsoft.Power...
Cmdlet Stop-Process Microsoft.Power...
Cmdlet Wait-Process Microsoft.Power...
Application qprocess.exe
PS C:\Users\angor>
Далее, по интересующему нас командлету можно получить справку:
PS C:\Users\angor> Get-Help Stop-Process
детальную информацию:
PS C:\Users\angor> Get-Help Stop-Process -Detailed
или полную информацию:
PS C:\Users\angor> Get-Help Stop-Process -Full
для некоторых командлетов можно увидеть и примеры:
PS C:\Users\angor> Get-Help Stop-Process -Examples
Командлеты работают с объектами.
Например командлет Get-ChildItem выдает объекты File и Folder для всех папок и файлов в текущем каталоге.
Вывод командлета можно перенаправить в файл ( используя символ > ) или в канал на вход другого командлета
( используя символ | ).
Если нет перенаправлений, то PowerShell форматирует список объектов в текст и выводит его на экран.
Пример:
PS C:\projects> Get-ChildItem
Directory: C:\projects
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 1/4/2014 2:03 AM old
-a--- 2/14/2014 2:29 AM 11884 install_oracle
-a--- 2/14/2014 4:46 AM 10314 install_oracle_2
-a--- 1/4/2014 2:12 AM 1309 neuro.py
-a--- 1/4/2014 6:02 AM 1876 neuro1.py
Этот командлет возвратил пять объектов ( один типа System.IO.DirectoryInfo и четыре типа System.IO.FileInfo )
Эти объекты обладают многочисленными методами и свойствами, но в заголовке таблицы командлет по умолчанию вывел всего пять свойств
(Mode, LastWriteTime, Length, Name)
Чтобы узнать все остальные свойства и методы объектов данного типа, необходимо передать эти объекты на вход другого командлета Get-Member:
PS C:\projects> Get-ChildItem | Get-Member
TypeName: System.IO.DirectoryInfo
Name MemberType Definition
---- ---------- ----------
Mode CodeProperty System.String Mode{get=Mode;}
Create Method void Create(), void Create(System.Securit...
CreateObjRef Method System.Runtime.Remoting.ObjRef CreateObjR...
CreateSubdirectory Method System.IO.DirectoryInfo CreateSubdirector...
Delete Method void Delete(), void Delete(bool recursive)
EnumerateDirectories Method System.Collections.Generic.IEnumerable[Sy...
EnumerateFiles Method System.Collections.Generic.IEnumerable[Sy...
EnumerateFileSystemInfos Method System.Collections.Generic.IEnumerable[Sy...
PSParentPath NoteProperty System.String PSParentPath=Microsoft.Powe...
PSPath NoteProperty System.String PSPath=Microsoft.PowerShell...
PSProvider NoteProperty System.Management.Automation.ProviderInfo...
Attributes Property System.IO.FileAttributes Attributes {get;...
CreationTime Property datetime CreationTime {get;set;}
CreationTimeUtc Property datetime CreationTimeUtc {get;set;}
Exists Property bool Exists {get;}
BaseName ScriptProperty System.Object BaseName {get=$this.Name;}
.....
TypeName: System.IO.FileInfo
Name MemberType Definition
---- ---------- ----------
Mode CodeProperty System.String Mode{get=Mode;}
AppendText Method System.IO.StreamWriter AppendText()
CopyTo Method System.IO.FileInfo CopyTo(string destFile...
Create Method System.IO.FileStream Create()
CreateObjRef Method System.Runtime.Remoting.ObjRef CreateObjR...
CreateText Method System.IO.StreamWriter CreateText()
Decrypt Method void Decrypt()
Delete Method void Delete()
ToString Method string ToString()
PSChildName NoteProperty System.String PSChildName=g
PSDrive NoteProperty System.Management.Automation.PSDriveInfo ...
PSIsContainer NoteProperty System.Boolean PSIsContainer=False
PSParentPath NoteProperty System.String PSParentPath=Microsoft.Powe...
PSPath NoteProperty System.String PSPath=Microsoft.PowerShell...
PSProvider NoteProperty System.Management.Automation.ProviderInfo...
Attributes Property System.IO.FileAttributes Attributes {get;...
CreationTime Property datetime CreationTime {get;set;}
Name Property string Name {get;}
BaseName ScriptProperty System.Object BaseName {get=if ($this.Ext...
VersionInfo ScriptProperty System.Object VersionInfo {get=[System.Di...
.....
PS C:\projects>
Так так данные типы объектов обладают методом Delete, то его можно использовать для удаления файлов и папок из указанного каталога:
Например:
PS C:\projects> Get-ChildItem c:\temp
Directory: C:\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2/23/2014 4:31 AM aa
d---- 2/23/2014 4:31 AM bb
-a--- 2/23/2014 4:31 AM 1 cc
-a--- 2/23/2014 4:31 AM 1 dd
PS C:\projects> (Get-ChildItem c:\temp).Delete()
PS C:\projects> Get-ChildItem c:\temp
PS C:\projects>
Все объекты были удалены.
Все хорошо, но существует несколько командлетов выполняющих универсальные действия:
Remove-Item
Move-Item
Rename-Item
Copy-Item
которые могут быть использованы с файловыми объектами для удаления, перемещения, переименования и копирования.
С данными командлетами можно использовать дополнительные опции:
Remove-Item -WhatIf
реально файлы удаляться не будут, но вывод покажет какие файлы были бы удалены без этой опции.
Remove-Item -Confirm
а эта опция потребует подтвердить удаление файлов.
Пример:
PS C:\projects> Get-ChildItem c:\temp
Directory: C:\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2/23/2014 4:21 AM aa
d---- 2/23/2014 4:21 AM bb
-a--- 2/23/2014 4:21 AM 1 cc
-a--- 2/23/2014 4:21 AM 1 dd
PS C:\projects> Get-ChildItem c:\temp | Remove-Item -WhatIf
What if: Performing the operation "Remove Directory" on target "C:\temp\aa".
What if: Performing the operation "Remove Directory" on target "C:\temp\bb".
What if: Performing the operation "Remove File" on target "C:\temp\cc".
What if: Performing the operation "Remove File" on target "C:\temp\dd".
PS C:\projects>
Ничего реально не удалилось.
PS C:\projects>
PS C:\projects> Get-ChildItem c:\temp | Remove-Item -Confirm
Потребовала подтверждения
PS C:\projects> Get-ChildItem c:\temp
PS C:\projects>
Объекты удалены, после подтверждения.
PS C:\Users\angor> Get-Command *process*
CommandType Name ModuleName
----------- ---- ----------
Cmdlet Debug-Process Microsoft.Power...
Cmdlet Get-Process Microsoft.Power...
Cmdlet Start-Process Microsoft.Power...
Cmdlet Stop-Process Microsoft.Power...
Cmdlet Wait-Process Microsoft.Power...
Application qprocess.exe
PS C:\Users\angor>
Далее, по интересующему нас командлету можно получить справку:
PS C:\Users\angor> Get-Help Stop-Process
детальную информацию:
PS C:\Users\angor> Get-Help Stop-Process -Detailed
или полную информацию:
PS C:\Users\angor> Get-Help Stop-Process -Full
для некоторых командлетов можно увидеть и примеры:
PS C:\Users\angor> Get-Help Stop-Process -Examples
Командлеты работают с объектами.
Например командлет Get-ChildItem выдает объекты File и Folder для всех папок и файлов в текущем каталоге.
Вывод командлета можно перенаправить в файл ( используя символ > ) или в канал на вход другого командлета
( используя символ | ).
Если нет перенаправлений, то PowerShell форматирует список объектов в текст и выводит его на экран.
Пример:
PS C:\projects> Get-ChildItem
Directory: C:\projects
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 1/4/2014 2:03 AM old
-a--- 2/14/2014 2:29 AM 11884 install_oracle
-a--- 2/14/2014 4:46 AM 10314 install_oracle_2
-a--- 1/4/2014 2:12 AM 1309 neuro.py
-a--- 1/4/2014 6:02 AM 1876 neuro1.py
Этот командлет возвратил пять объектов ( один типа System.IO.DirectoryInfo и четыре типа System.IO.FileInfo )
Эти объекты обладают многочисленными методами и свойствами, но в заголовке таблицы командлет по умолчанию вывел всего пять свойств
(Mode, LastWriteTime, Length, Name)
Чтобы узнать все остальные свойства и методы объектов данного типа, необходимо передать эти объекты на вход другого командлета Get-Member:
PS C:\projects> Get-ChildItem | Get-Member
TypeName: System.IO.DirectoryInfo
Name MemberType Definition
---- ---------- ----------
Mode CodeProperty System.String Mode{get=Mode;}
Create Method void Create(), void Create(System.Securit...
CreateObjRef Method System.Runtime.Remoting.ObjRef CreateObjR...
CreateSubdirectory Method System.IO.DirectoryInfo CreateSubdirector...
Delete Method void Delete(), void Delete(bool recursive)
EnumerateDirectories Method System.Collections.Generic.IEnumerable[Sy...
EnumerateFiles Method System.Collections.Generic.IEnumerable[Sy...
EnumerateFileSystemInfos Method System.Collections.Generic.IEnumerable[Sy...
PSParentPath NoteProperty System.String PSParentPath=Microsoft.Powe...
PSPath NoteProperty System.String PSPath=Microsoft.PowerShell...
PSProvider NoteProperty System.Management.Automation.ProviderInfo...
Attributes Property System.IO.FileAttributes Attributes {get;...
CreationTime Property datetime CreationTime {get;set;}
CreationTimeUtc Property datetime CreationTimeUtc {get;set;}
Exists Property bool Exists {get;}
BaseName ScriptProperty System.Object BaseName {get=$this.Name;}
.....
TypeName: System.IO.FileInfo
Name MemberType Definition
---- ---------- ----------
Mode CodeProperty System.String Mode{get=Mode;}
AppendText Method System.IO.StreamWriter AppendText()
CopyTo Method System.IO.FileInfo CopyTo(string destFile...
Create Method System.IO.FileStream Create()
CreateObjRef Method System.Runtime.Remoting.ObjRef CreateObjR...
CreateText Method System.IO.StreamWriter CreateText()
Decrypt Method void Decrypt()
Delete Method void Delete()
ToString Method string ToString()
PSChildName NoteProperty System.String PSChildName=g
PSDrive NoteProperty System.Management.Automation.PSDriveInfo ...
PSIsContainer NoteProperty System.Boolean PSIsContainer=False
PSParentPath NoteProperty System.String PSParentPath=Microsoft.Powe...
PSPath NoteProperty System.String PSPath=Microsoft.PowerShell...
PSProvider NoteProperty System.Management.Automation.ProviderInfo...
Attributes Property System.IO.FileAttributes Attributes {get;...
CreationTime Property datetime CreationTime {get;set;}
Name Property string Name {get;}
BaseName ScriptProperty System.Object BaseName {get=if ($this.Ext...
VersionInfo ScriptProperty System.Object VersionInfo {get=[System.Di...
.....
PS C:\projects>
Так так данные типы объектов обладают методом Delete, то его можно использовать для удаления файлов и папок из указанного каталога:
Например:
PS C:\projects> Get-ChildItem c:\temp
Directory: C:\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2/23/2014 4:31 AM aa
d---- 2/23/2014 4:31 AM bb
-a--- 2/23/2014 4:31 AM 1 cc
-a--- 2/23/2014 4:31 AM 1 dd
PS C:\projects> (Get-ChildItem c:\temp).Delete()
PS C:\projects> Get-ChildItem c:\temp
PS C:\projects>
Все объекты были удалены.
Все хорошо, но существует несколько командлетов выполняющих универсальные действия:
Remove-Item
Move-Item
Rename-Item
Copy-Item
которые могут быть использованы с файловыми объектами для удаления, перемещения, переименования и копирования.
С данными командлетами можно использовать дополнительные опции:
Remove-Item -WhatIf
реально файлы удаляться не будут, но вывод покажет какие файлы были бы удалены без этой опции.
Remove-Item -Confirm
а эта опция потребует подтвердить удаление файлов.
Пример:
PS C:\projects> Get-ChildItem c:\temp
Directory: C:\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2/23/2014 4:21 AM aa
d---- 2/23/2014 4:21 AM bb
-a--- 2/23/2014 4:21 AM 1 cc
-a--- 2/23/2014 4:21 AM 1 dd
PS C:\projects> Get-ChildItem c:\temp | Remove-Item -WhatIf
What if: Performing the operation "Remove Directory" on target "C:\temp\aa".
What if: Performing the operation "Remove Directory" on target "C:\temp\bb".
What if: Performing the operation "Remove File" on target "C:\temp\cc".
What if: Performing the operation "Remove File" on target "C:\temp\dd".
PS C:\projects>
Ничего реально не удалилось.
PS C:\projects>
PS C:\projects> Get-ChildItem c:\temp | Remove-Item -Confirm
Потребовала подтверждения
PS C:\projects> Get-ChildItem c:\temp
PS C:\projects>
Объекты удалены, после подтверждения.