PowerShell
2016/11/23更新
対応バージョン: 6.0.0-alpha.13
オープンソースになったMicrosoftのPowerShellをUbuntu 16.04にインストールする手順を示す。
開発はGitHubに移され、インストール手順や各種ドキュメントもこちらに集約されている。
インストール
まず以下からパッケージファイルを入手する。
https://github.com/PowerShell/PowerShell/blob/master/README.md#get-powershell
これを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> :
関連資料・記事
参考サイト
Windows PowerShellオーナーマニュアル (Microsoft)
Windows PowerShellを使用する (Microsoft)
Windows PowerShellを使う (ITpro)
こんなに便利だ PowerShell (ITpro)
PowerShell技術情報 (Qiita)