Mac/LinuxばかりでWindows触らなくなってもう半年になります。やっとBashが手についてきたこのごろですが、昨日こんなニュースを見つけました。
Windows使っていた時にはお世話になりっぱなしだったPowerShellがまた使えるかもと思い早速試してみました。
基本情報
レポジトリはこちらです。
そして、インストール手順はこちらです。MacもLinuxも記載されています。 github.com
インストール
Mac版のインストールはPKGファイルなので、ダウンロードしてダブルクリック+ウィザードだけ、Linux版のインストールもダウンロードして、yum install
するだけです。
Linux版のインストール手順はこちら。
# wget https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-alpha.9/powershell-6.0.0_alpha.9-1.el7.centos.x86_64.rpm # yum install powershell-6.0.0_alpha.9-1.el7.centos.x86_64.rpm ----省略 ================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================ インストール中: powershell x86_64 6.0.0_alpha.9-1 /powershell-6.0.0_alpha.9-1.el7.centos.x86_64 121 M 依存性関連でのインストールをします: libicu x86_64 50.1.2-15.el7 base 6.9 M libunwind x86_64 2:1.1-5.el7_2.2 updates 56 k トランザクションの要約 ================================================================================ ----省略
起動してみる
powershell
起動しました。
$ powershell PowerShell Copyright (C) 2016 Microsoft Corporation. All rights reserved. PS /home/otomo>
バージョン情報の変数も機能しています。
PS /home/otomo> $PSVersionTable Name Value ---- ----- PSVersion 6.0.0-alpha PSEdition Core PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 3.0.0.0 GitCommitId v6.0.0-alpha.9 CLRVersion WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1
少し触ってみる Get-Process + Pipeline
久しぶりにこのパイプライン書いたけど、ちゃんとPowerShellっぽい。
PS /home/otomo> Get-Process | where {$_.ProcessName.Contains("ssh")} Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 0 0 0 1 0.040 868 868 sshd 0 0 0 1 0.090 11489 489 sshd 0 0 0 1 0.440 11492 489 sshd
PSDriveも使える
PowerShellは色々な要素をファイルシステムと同じように利用できるのですが、そのPSDriveはWindows以外でも利用できるようです。
PS /home/otomo> Get-PSDrive Name Used (GB) Free (GB) Provider Root CurrentLocation ---- --------- --------- -------- ---- --------------- / 3.05 34.20 FileSystem / home/otomo Alias Alias Cert Certificate \ Env Environment Function Function Variable Variable
おお、PSDriveしっかり使えてる。
PS /home/otomo> Set-Location Env: PS Env:/> Get-ChildItem Name Value ---- ----- _ /bin/powershell HISTCONTROL ignoredups HISTSIZE 1000 HOME /home/otomo
コマンドレット数は?
コマンドレットは現時点で345本みたい。手元のWindows10がクリーンインストールで1000本超えてるので、それと比較すれば少ないか。当然と言えば当然ですが。ちなみに同じMac版PowerShellも同じ個数です。
PS Env:/> Get-Command | measure | select count Count ----- 345
PS Env:/> Get-Command | select name
Name
----
Add-NodeKeys
AddDscResourceProperty
AddDscResourcePropertyFromMetadata
AfterAll
AfterEach
Assert-MockCalled
Assert-VerifiableMocks
BeforeAll
BeforeEach
cd..
cd\
CheckResourceFound
Clear-Host
Compress-Archive
Configuration
Context
ConvertTo-MOFInstance
Describe
Expand-Archive
Find-Command
Find-DscResource
Find-Module
Find-RoleCapability
Find-Script
Format-Hex
Generate-VersionInfo
Get-CompatibleVersionAddtionaPropertiesStr
Get-ComplexResourceQualifier
Get-ConfigurationErrorCount
Get-DscResource
Get-DSCResourceModules
Get-EncryptedPassword
Get-FileHash
Get-InnerMostErrorRecord
Get-InstalledModule
Get-InstalledScript
Get-MockDynamicParameters
Get-MofInstanceName
Get-MofInstanceText
Get-PositionInfo
Get-PSCurrentConfigurationNode
Get-PSDefaultConfigurationDocument
Get-PSMetaConfigDocumentInstVersionInfo
Get-PSMetaConfigurationProcessed
Get-PSRepository
Get-PSTopConfigurationName
Get-PublicKeyFromFile
Get-PublicKeyFromStore
Get-TestDriveItem
Get-Verb
GetCompositeResource
GetImplementingModulePath
GetModule
GetPatterns
GetResourceFromKeyword
GetSyntax
help
Import-PowerShellDataFile
ImportCimAndScriptKeywordsFromModule
ImportClassResourcesFromModule
ImportSystemModules
In
Initialize-ConfigurationRuntimeState
InModuleScope
Install-Module
Install-Script
Invoke-Mock
Invoke-Pester
IsHiddenResource
IsPatternMatched
It
Mock
more
New-DscChecksum
New-Fixture
New-Guid
New-ScriptFileInfo
New-TemporaryFile
Node
oss
Pause
prompt
PSConsoleHostReadline
Publish-Module
Publish-Script
ReadEnvironmentFile
Register-PSRepository
Save-Module
Save-Script
Set-DynamicParameterVariables
Set-NodeExclusiveResources
Set-NodeManager
Set-NodeResources
Set-NodeResourceSource
Set-PSCurrentConfigurationNode
Set-PSDefaultConfigurationDocument
Set-PSMetaConfigDocInsProcessedBeforeMeta
Set-PSMetaConfigVersionInfoV2
Set-PSRepository
Set-PSTopConfigurationName
Setup
Should
StrongConnect
TabExpansion2
Test-ConflictingResources
Test-ModuleReloadRequired
Test-MofInstanceText
Test-NodeManager
Test-NodeResources
Test-NodeResourceSource
Test-ScriptFileInfo
ThrowError
Uninstall-Module
Uninstall-Script
Unregister-PSRepository
Update-ConfigurationDocumentRef
Update-ConfigurationErrorCount
Update-DependsOn
Update-LocalConfigManager
Update-Module
Update-ModuleManifest
Update-ModuleVersion
Update-Script
Update-ScriptFileInfo
ValidateNoCircleInNodeResources
ValidateNodeExclusiveResources
ValidateNodeManager
ValidateNodeResources
ValidateNodeResourceSource
ValidateNoNameNodeResources
ValidateUpdate-ConfigurationData
Write-Log
Write-MetaConfigFile
Write-NodeMOFFile
WriteFile
Add-Content
Add-History
Add-Member
Add-Type
Clear-Content
Clear-History
Clear-Item
Clear-ItemProperty
Clear-Variable
Compare-Object
Connect-PSSession
Convert-Path
ConvertFrom-Csv
ConvertFrom-Json
ConvertFrom-SecureString
ConvertFrom-StringData
ConvertTo-Csv
ConvertTo-Json
ConvertTo-SecureString
ConvertTo-Xml
Copy-Item
Copy-ItemProperty
Debug-Job
Debug-Process
Debug-Runspace
Disable-PSBreakpoint
Disable-PSSessionConfiguration
Disable-RunspaceDebug
Disconnect-PSSession
Enable-PSBreakpoint
Enable-PSSessionConfiguration
Enable-RunspaceDebug
Enter-PSHostProcess
Enter-PSSession
Exit-PSHostProcess
Exit-PSSession
Export-Alias
Export-Clixml
Export-Csv
Export-FormatData
Export-ModuleMember
Find-Package
Find-PackageProvider
ForEach-Object
Format-Custom
Format-List
Format-Table
Format-Wide
Get-Alias
Get-ChildItem
Get-Command
Get-Content
Get-Credential
Get-Culture
Get-Date
Get-Event
Get-EventSubscriber
Get-ExecutionPolicy
Get-FormatData
Get-Help
Get-History
Get-Host
Get-Item
Get-ItemProperty
Get-ItemPropertyValue
Get-Job
Get-Location
Get-Member
Get-Module
Get-Package
Get-PackageProvider
Get-PackageSource
Get-Process
Get-PSBreakpoint
Get-PSCallStack
Get-PSDrive
Get-PSHostProcessInfo
Get-PSProvider
Get-PSReadlineKeyHandler
Get-PSReadlineOption
Get-PSSession
Get-PSSessionCapability
Get-PSSessionConfiguration
Get-Random
Get-Runspace
Get-RunspaceDebug
Get-TraceSource
Get-TypeData
Get-UICulture
Get-Unique
Get-Variable
Group-Object
Import-Alias
Import-Clixml
Import-Csv
Import-LocalizedData
Import-Module
Import-PackageProvider
Install-Package
Install-PackageProvider
Invoke-Command
Invoke-Expression
Invoke-History
Invoke-Item
Invoke-RestMethod
Invoke-WebRequest
Join-Path
Measure-Command
Measure-Object
Move-Item
Move-ItemProperty
New-Alias
New-Event
New-Item
New-ItemProperty
New-Module
New-ModuleManifest
New-Object
New-PSDrive
New-PSRoleCapabilityFile
New-PSSession
New-PSSessionConfigurationFile
New-PSSessionOption
New-PSTransportOption
New-TimeSpan
New-Variable
Out-Default
Out-File
Out-Host
Out-Null
Out-String
Pop-Location
Push-Location
Read-Host
Receive-Job
Receive-PSSession
Register-ArgumentCompleter
Register-EngineEvent
Register-ObjectEvent
Register-PackageSource
Register-PSSessionConfiguration
Remove-Event
Remove-Item
Remove-ItemProperty
Remove-Job
Remove-Module
Remove-PSBreakpoint
Remove-PSDrive
Remove-PSReadlineKeyHandler
Remove-PSSession
Remove-TypeData
Remove-Variable
Rename-Item
Rename-ItemProperty
Resolve-Path
Save-Help
Save-Package
Select-Object
Select-String
Select-Xml
Set-Alias
Set-Content
Set-Date
Set-ExecutionPolicy
Set-Item
Set-ItemProperty
Set-Location
Set-PackageSource
Set-PSBreakpoint
Set-PSDebug
Set-PSReadlineKeyHandler
Set-PSReadlineOption
Set-PSSessionConfiguration
Set-StrictMode
Set-TraceSource
Set-Variable
Sort-Object
Split-Path
Start-Job
Start-Process
Start-Sleep
Start-Transcript
Stop-Job
Stop-Process
Stop-Transcript
Tee-Object
Test-ModuleManifest
Test-Path
Test-PSSessionConfigurationFile
Trace-Command
Uninstall-Package
Unregister-Event
Unregister-PackageSource
Unregister-PSSessionConfiguration
Update-FormatData
Update-Help
Update-TypeData
Wait-Debugger
Wait-Event
Wait-Job
Wait-Process
Where-Object
Write-Debug
Write-Error
Write-Host
Write-Information
Write-Output
Write-Progress
Write-Verbose
Write-Warning