PowerShell

2016/11/23更新

対応バージョン: 6.0.0-alpha.13

オープンソースになったMicrosoftのPowerShellをUbuntu 16.04にインストールする手順を示す。

開発はGitHubに移され、インストール手順や各種ドキュメントもこちらに集約されている。

インストール

まず以下からパッケージファイルを入手する。

これをdpkgコマンドでインストールしてパッケージの依存関係を正しい状態にすれば完了である。

% sudo dpkg -i powershell_6.0.0-alpha.13-1ubuntu1.16.04.1_amd64.deb
% sudo apt-get install -f

インタプリタ起動

インストールが終わったらインタプリタを起動して各種コマンドを実行してみる。

% powershell
PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS /tmp>

使用できるコマンドはGet-Commandで確認できる。ここではエイリアスなどを除外するために-CommandTypeオプションにCmdletを指定している。

PS /tmp> Get-Command -CommandType Cmdlet
CommandType  Name                               Version  Source    
-----------  ----                               -------  ------    
Cmdlet       Add-Content                        3.1.0.0  Microso...
Cmdlet       Add-History                        3.0.0.0  Microso...
Cmdlet       Add-Member                         3.1.0.0  Microso...
Cmdlet       Add-Type                           3.1.0.0  Microso...
Cmdlet       Clear-Content                      3.1.0.0  Microso...
Cmdlet       Clear-History                      3.0.0.0  Microso...
Cmdlet       Clear-Item                         3.1.0.0  Microso...
Cmdlet       Clear-ItemProperty                 3.1.0.0  Microso...
Cmdlet       Clear-Variable                     3.1.0.0  Microso...
Cmdlet       Compare-Object                     3.1.0.0  Microso...
Cmdlet       Connect-PSSession                  3.0.0.0  Microso...
Cmdlet       Convert-Path                       3.1.0.0  Microso...
Cmdlet       ConvertFrom-Csv                    3.1.0.0  Microso...
Cmdlet       ConvertFrom-Json                   3.1.0.0  Microso...
Cmdlet       ConvertFrom-SecureString           3.0.0.0  Microso...
Cmdlet       ConvertFrom-StringData             3.1.0.0  Microso...
Cmdlet       ConvertTo-Csv                      3.1.0.0  Microso...
Cmdlet       ConvertTo-Html                     3.1.0.0  Microso...
Cmdlet       ConvertTo-Json                     3.1.0.0  Microso...
Cmdlet       ConvertTo-SecureString             3.0.0.0  Microso...
Cmdlet       ConvertTo-Xml                      3.1.0.0  Microso...
Cmdlet       Copy-Item                          3.1.0.0  Microso...
Cmdlet       Copy-ItemProperty                  3.1.0.0  Microso...
Cmdlet       Debug-Job                          3.0.0.0  Microso...
Cmdlet       Debug-Process                      3.1.0.0  Microso...
Cmdlet       Debug-Runspace                     3.1.0.0  Microso...
Cmdlet       Disable-PSBreakpoint               3.1.0.0  Microso...
Cmdlet       Disable-PSSessionConfiguration     3.0.0.0  Microso...
Cmdlet       Disable-RunspaceDebug              3.1.0.0  Microso...
Cmdlet       Disconnect-PSSession               3.0.0.0  Microso...
Cmdlet       Enable-PSBreakpoint                3.1.0.0  Microso...
Cmdlet       Enable-PSSessionConfiguration      3.0.0.0  Microso...
Cmdlet       Enable-RunspaceDebug               3.1.0.0  Microso...
Cmdlet       Enter-PSHostProcess                3.0.0.0  Microso...
Cmdlet       Enter-PSSession                    3.0.0.0  Microso...
Cmdlet       Exit-PSHostProcess                 3.0.0.0  Microso...
Cmdlet       Exit-PSSession                     3.0.0.0  Microso...
Cmdlet       Export-Alias                       3.1.0.0  Microso...
Cmdlet       Export-Clixml                      3.1.0.0  Microso...
Cmdlet       Export-Csv                         3.1.0.0  Microso...
Cmdlet       Export-FormatData                  3.1.0.0  Microso...
Cmdlet       Export-ModuleMember                3.0.0.0  Microso...
Cmdlet       Export-PSSession                   3.1.0.0  Microso...
Cmdlet       Find-Package                       1.1.1.0  Package...
Cmdlet       Find-PackageProvider               1.1.1.0  Package...
Cmdlet       ForEach-Object                     3.0.0.0  Microso...
Cmdlet       Format-Custom                      3.1.0.0  Microso...
Cmdlet       Format-List                        3.1.0.0  Microso...
Cmdlet       Format-Table                       3.1.0.0  Microso...
Cmdlet       Format-Wide                        3.1.0.0  Microso...
Cmdlet       Get-Alias                          3.1.0.0  Microso...
Cmdlet       Get-ChildItem                      3.1.0.0  Microso...
Cmdlet       Get-Command                        3.0.0.0  Microso...
Cmdlet       Get-Content                        3.1.0.0  Microso...
Cmdlet       Get-Credential                     3.0.0.0  Microso...
Cmdlet       Get-Culture                        3.1.0.0  Microso...
Cmdlet       Get-Date                           3.1.0.0  Microso...
Cmdlet       Get-Event                          3.1.0.0  Microso...
Cmdlet       Get-EventSubscriber                3.1.0.0  Microso...
Cmdlet       Get-ExecutionPolicy                3.0.0.0  Microso...
Cmdlet       Get-FormatData                     3.1.0.0  Microso...
Cmdlet       Get-Help                           3.0.0.0  Microso...
Cmdlet       Get-History                        3.0.0.0  Microso...
Cmdlet       Get-Host                           3.1.0.0  Microso...
Cmdlet       Get-Item                           3.1.0.0  Microso...
Cmdlet       Get-ItemProperty                   3.1.0.0  Microso...
Cmdlet       Get-ItemPropertyValue              3.1.0.0  Microso...
Cmdlet       Get-Job                            3.0.0.0  Microso...
Cmdlet       Get-Location                       3.1.0.0  Microso...
Cmdlet       Get-Member                         3.1.0.0  Microso...
Cmdlet       Get-Module                         3.0.0.0  Microso...
Cmdlet       Get-Package                        1.1.1.0  Package...
Cmdlet       Get-PackageProvider                1.1.1.0  Package...
Cmdlet       Get-PackageSource                  1.1.1.0  Package...
Cmdlet       Get-Process                        3.1.0.0  Microso...
Cmdlet       Get-PSBreakpoint                   3.1.0.0  Microso...
Cmdlet       Get-PSCallStack                    3.1.0.0  Microso...
Cmdlet       Get-PSDrive                        3.1.0.0  Microso...
Cmdlet       Get-PSHostProcessInfo              3.0.0.0  Microso...
Cmdlet       Get-PSProvider                     3.1.0.0  Microso...
Cmdlet       Get-PSReadlineKeyHandler           1.2      PSReadLine
Cmdlet       Get-PSReadlineOption               1.2      PSReadLine
Cmdlet       Get-PSSession                      3.0.0.0  Microso...
Cmdlet       Get-PSSessionCapability            3.0.0.0  Microso...
Cmdlet       Get-PSSessionConfiguration         3.0.0.0  Microso...
Cmdlet       Get-Random                         3.1.0.0  Microso...
Cmdlet       Get-Runspace                       3.1.0.0  Microso...
Cmdlet       Get-RunspaceDebug                  3.1.0.0  Microso...
Cmdlet       Get-TraceSource                    3.1.0.0  Microso...
Cmdlet       Get-TypeData                       3.1.0.0  Microso...
Cmdlet       Get-UICulture                      3.1.0.0  Microso...
Cmdlet       Get-Unique                         3.1.0.0  Microso...
Cmdlet       Get-Uptime                         3.1.0.0  Microso...
Cmdlet       Get-Variable                       3.1.0.0  Microso...
Cmdlet       Group-Object                       3.1.0.0  Microso...
Cmdlet       Import-Alias                       3.1.0.0  Microso...
Cmdlet       Import-Clixml                      3.1.0.0  Microso...
Cmdlet       Import-Csv                         3.1.0.0  Microso...
Cmdlet       Import-LocalizedData               3.1.0.0  Microso...
Cmdlet       Import-Module                      3.0.0.0  Microso...
Cmdlet       Import-PackageProvider             1.1.1.0  Package...
Cmdlet       Import-PSSession                   3.1.0.0  Microso...
Cmdlet       Install-Package                    1.1.1.0  Package...
Cmdlet       Install-PackageProvider            1.1.1.0  Package...
Cmdlet       Invoke-Command                     3.0.0.0  Microso...
Cmdlet       Invoke-Expression                  3.1.0.0  Microso...
Cmdlet       Invoke-History                     3.0.0.0  Microso...
Cmdlet       Invoke-Item                        3.1.0.0  Microso...
Cmdlet       Invoke-RestMethod                  3.1.0.0  Microso...
Cmdlet       Invoke-WebRequest                  3.1.0.0  Microso...
Cmdlet       Join-Path                          3.1.0.0  Microso...
Cmdlet       Measure-Command                    3.1.0.0  Microso...
Cmdlet       Measure-Object                     3.1.0.0  Microso...
Cmdlet       Move-Item                          3.1.0.0  Microso...
Cmdlet       Move-ItemProperty                  3.1.0.0  Microso...
Cmdlet       New-Alias                          3.1.0.0  Microso...
Cmdlet       New-Event                          3.1.0.0  Microso...
Cmdlet       New-Item                           3.1.0.0  Microso...
Cmdlet       New-ItemProperty                   3.1.0.0  Microso...
Cmdlet       New-Module                         3.0.0.0  Microso...
Cmdlet       New-ModuleManifest                 3.0.0.0  Microso...
Cmdlet       New-Object                         3.1.0.0  Microso...
Cmdlet       New-PSDrive                        3.1.0.0  Microso...
Cmdlet       New-PSRoleCapabilityFile           3.0.0.0  Microso...
Cmdlet       New-PSSession                      3.0.0.0  Microso...
Cmdlet       New-PSSessionConfigurationFile     3.0.0.0  Microso...
Cmdlet       New-PSSessionOption                3.0.0.0  Microso...
Cmdlet       New-PSTransportOption              3.0.0.0  Microso...
Cmdlet       New-TimeSpan                       3.1.0.0  Microso...
Cmdlet       New-Variable                       3.1.0.0  Microso...
Cmdlet       Out-Default                        3.0.0.0  Microso...
Cmdlet       Out-File                           3.1.0.0  Microso...
Cmdlet       Out-Host                           3.0.0.0  Microso...
Cmdlet       Out-Null                           3.0.0.0  Microso...
Cmdlet       Out-String                         3.1.0.0  Microso...
Cmdlet       Pop-Location                       3.1.0.0  Microso...
Cmdlet       Push-Location                      3.1.0.0  Microso...
Cmdlet       Read-Host                          3.1.0.0  Microso...
Cmdlet       Receive-Job                        3.0.0.0  Microso...
Cmdlet       Receive-PSSession                  3.0.0.0  Microso...
Cmdlet       Register-ArgumentCompleter         3.0.0.0  Microso...
Cmdlet       Register-EngineEvent               3.1.0.0  Microso...
Cmdlet       Register-ObjectEvent               3.1.0.0  Microso...
Cmdlet       Register-PackageSource             1.1.1.0  Package...
Cmdlet       Register-PSSessionConfiguration    3.0.0.0  Microso...
Cmdlet       Remove-Event                       3.1.0.0  Microso...
Cmdlet       Remove-Item                        3.1.0.0  Microso...
Cmdlet       Remove-ItemProperty                3.1.0.0  Microso...
Cmdlet       Remove-Job                         3.0.0.0  Microso...
Cmdlet       Remove-Module                      3.0.0.0  Microso...
Cmdlet       Remove-PSBreakpoint                3.1.0.0  Microso...
Cmdlet       Remove-PSDrive                     3.1.0.0  Microso...
Cmdlet       Remove-PSReadlineKeyHandler        1.2      PSReadLine
Cmdlet       Remove-PSSession                   3.0.0.0  Microso...
Cmdlet       Remove-TypeData                    3.1.0.0  Microso...
Cmdlet       Remove-Variable                    3.1.0.0  Microso...
Cmdlet       Rename-Item                        3.1.0.0  Microso...
Cmdlet       Rename-ItemProperty                3.1.0.0  Microso...
Cmdlet       Resolve-Path                       3.1.0.0  Microso...
Cmdlet       Save-Help                          3.0.0.0  Microso...
Cmdlet       Save-Package                       1.1.1.0  Package...
Cmdlet       Select-Object                      3.1.0.0  Microso...
Cmdlet       Select-String                      3.1.0.0  Microso...
Cmdlet       Select-Xml                         3.1.0.0  Microso...
Cmdlet       Set-Alias                          3.1.0.0  Microso...
Cmdlet       Set-Content                        3.1.0.0  Microso...
Cmdlet       Set-Date                           3.1.0.0  Microso...
Cmdlet       Set-ExecutionPolicy                3.0.0.0  Microso...
Cmdlet       Set-Item                           3.1.0.0  Microso...
Cmdlet       Set-ItemProperty                   3.1.0.0  Microso...
Cmdlet       Set-Location                       3.1.0.0  Microso...
Cmdlet       Set-PackageSource                  1.1.1.0  Package...
Cmdlet       Set-PSBreakpoint                   3.1.0.0  Microso...
Cmdlet       Set-PSDebug                        3.0.0.0  Microso...
Cmdlet       Set-PSReadlineKeyHandler           1.2      PSReadLine
Cmdlet       Set-PSReadlineOption               1.2      PSReadLine
Cmdlet       Set-PSSessionConfiguration         3.0.0.0  Microso...
Cmdlet       Set-StrictMode                     3.0.0.0  Microso...
Cmdlet       Set-TraceSource                    3.1.0.0  Microso...
Cmdlet       Set-Variable                       3.1.0.0  Microso...
Cmdlet       Sort-Object                        3.1.0.0  Microso...
Cmdlet       Split-Path                         3.1.0.0  Microso...
Cmdlet       Start-Job                          3.0.0.0  Microso...
Cmdlet       Start-Process                      3.1.0.0  Microso...
Cmdlet       Start-Sleep                        3.1.0.0  Microso...
Cmdlet       Start-Transcript                   3.0.0.0  Microso...
Cmdlet       Stop-Job                           3.0.0.0  Microso...
Cmdlet       Stop-Process                       3.1.0.0  Microso...
Cmdlet       Stop-Transcript                    3.0.0.0  Microso...
Cmdlet       Tee-Object                         3.1.0.0  Microso...
Cmdlet       Test-ModuleManifest                3.0.0.0  Microso...
Cmdlet       Test-Path                          3.1.0.0  Microso...
Cmdlet       Test-PSSessionConfigurationFile    3.0.0.0  Microso...
Cmdlet       Trace-Command                      3.1.0.0  Microso...
Cmdlet       Uninstall-Package                  1.1.1.0  Package...
Cmdlet       Unregister-Event                   3.1.0.0  Microso...
Cmdlet       Unregister-PackageSource           1.1.1.0  Package...
Cmdlet       Unregister-PSSessionConfiguration  3.0.0.0  Microso...
Cmdlet       Update-FormatData                  3.1.0.0  Microso...
Cmdlet       Update-Help                        3.0.0.0  Microso...
Cmdlet       Update-TypeData                    3.1.0.0  Microso...
Cmdlet       Wait-Debugger                      3.1.0.0  Microso...
Cmdlet       Wait-Event                         3.1.0.0  Microso...
Cmdlet       Wait-Job                           3.0.0.0  Microso...
Cmdlet       Wait-Process                       3.1.0.0  Microso...
Cmdlet       Where-Object                       3.0.0.0  Microso...
Cmdlet       Write-Debug                        3.1.0.0  Microso...
Cmdlet       Write-Error                        3.1.0.0  Microso...
Cmdlet       Write-Host                         3.1.0.0  Microso...
Cmdlet       Write-Information                  3.1.0.0  Microso...
Cmdlet       Write-Output                       3.1.0.0  Microso...
Cmdlet       Write-Progress                     3.1.0.0  Microso...
Cmdlet       Write-Verbose                      3.1.0.0  Microso...
Cmdlet       Write-Warning                      3.1.0.0  Microso...

PowerShellの関連資料は後でまとめて紹介するが、ここではいくつかのコマンドを実行してみる。

Bashコマンドへのエイリアスも用意されており、UNIXユーザにも配慮されている。

現在日時表示
PS /tmp> Get-Date
2016年11月23日水曜日 22:27:55
ドライブ情報表示
PS /tmp> Get-PSDrive
Name        Used (GB)     Free (GB) Provider      Root
----        ---------     --------- --------      ----
/              209.52        241.24 FileSystem    /
Alias                               Alias
Env                                 Environment
Function                            Function
Variable                            Variable
プロセス情報表示
PS /tmp> Get-Process

 NPM(K)  PM(K)  WS(K)  CPU(s)    Id  SI ProcessName
 ------  -----  -----  ------    --  -- -----------
      0      0      0   0.000  1820 817 (sd-pam)
      0      0      0   0.000  3840 839 (sd-pam)
      0      0      1   1.760  1682 682 accounts-daemon
      0      0      0   0.000    64   0 acpi_thermal_pm
      0      0      0   0.000  2255 255 agetty
:
ディレクトリリスト表示

dirあるいはGet-ChildItem

PS /tmp> dir
    Directory: /tmp

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
------       2016/11/23     22:38              8 test.txt

PS /tmp> Get-ChildItem

    Directory: /tmp

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
------       2016/11/23     22:38              8 test.txt
ファイル作成
PS /tmp> New-Item test2.txt

    Directory: /tmp

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
------       2016/11/23     22:42              0 test2.txt
ファイルコピー
PS /tmp> Copy-Item test.txt test3.txt
ファイル削除
PS /tmp> Remove-Item test3.txt
ファイル検索
PS /tmp> Get-ChildItem *.txt

    Directory: /tmp

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
------       2016/11/23     22:38              8 test.txt
------       2016/11/23     22:42              0 test2.txt
ファイル内文字列検索
PS /tmp> Get-Content test.txt
123
abc
xxx

PS /tmp> Select-String -Pattern "abc" *.txt

test.txt:2:abc
出力形式指定

コマンドの出力結果をCSVやXML形式に加工できる。

PS /tmp> Get-Content test.txt | Export-csv test.csv

PS /tmp> Get-Content test.csv
"PSPath","PSParentPath","PSChildName","PSDrive","PSProvider","ReadCount","Length"
"/tmp/test.txt","/tmp","test.txt","/","Microsoft.PowerShell.Core\FileSystem","1","3"
"/tmp/test.txt","/tmp","test.txt","/","Microsoft.PowerShell.Core\FileSystem","2","3"
"/tmp/test.txt","/tmp","test.txt","/","Microsoft.PowerShell.Core\FileSystem","3","3"

PS /tmp> Get-Content test.txt | Export-Clixml test.xml

PS /tmp> Get-Content test.xml
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
  <Obj RefId="0">
    <S>123</S>
    <MS>
      <S N="PSPath">/tmp/test.txt</S>
      <S N="PSParentPath">/tmp</S>
      <S N="PSChildName">test.txt</S>
      <Obj N="PSDrive" RefId="1">
        <TN RefId="0">
          <T>System.Management.Automation.PSDriveInfo</T>
          <T>System.Object</T>
        </TN>
:

関連資料・記事

参考サイト