PowerShell Core 6.0 on macOS High Sierra

「PowerShell Core 6.0」が公開されました。

Windows PowerShell 5.1 の後継バージョンのように見えますが、違います。

オープンソースとして作り直されたものであり、Windows だけでなく Linux や macOS でも使えることが特徴です。

(Linux や macOS で使える Powershell として以前からあった Pash とも別物です。)

早速、macOS High Sierra (10.13.2) にインストールしてみました。

※サポート対象は macOS 10.12 以上だそうです。

 





   




   

 

まずはGitHubからインストーラーパッケージを入手します。

https://github.com/PowerShell/PowerShell

「.pkg」をクリックすることで、「powershell-6.0.0-osx.10.12-x64.pkg」(約50.9MB)をダウンロードできます。

 

 

ダウンロードしたパッケージをダブルクリックすればインストールできるのですが、おそらく多くの場合は「開発元が未確認のため開けません。」というメッセージが出てブロックされると思われます。

その場合は「システム環境設定」を開き、「セキュリティとプライバシー」の「一般」の中で許可します。

インストール完了後、「アプリケーション」内に「PowerShell」が現れます。Docにも追加できます。

 

 

起動して、とりあえず Get-Host を打ってみました。

Name : ConsoleHost
Version : 6.0.0
InstanceId : 94cf40dd-1d99-4954-a986-f6cb7b996fb1
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : ja-JP
CurrentUICulture : ja-JP
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled : True
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace

 

 

続いて、$PSVersionTable です。

Name Value
—- —–
PSVersion 6.0.0
PSEdition Core
GitCommitId v6.0.0
OS Darwin 17.3.0 Darwin Kernel Version 17.3.0: Thu Nov 9 18:09:22 PST 2017; root:xnu-4570.31.3~1/RELEASE_X86_64
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0

 

 

デフォルトで使えるコマンドレットを、Get-Command で確認します。(WriteFile までが Function、Add-Content 以降が Cmdlet です。

Add-NodeKeys
AddDscResourceProperty
AddDscResourcePropertyFromMetadata
cd..
cd\
CheckResourceFound
Clear-Host
Compress-Archive
Configuration
ConvertTo-MOFInstance
Expand-Archive
Find-Command
Find-DscResource
Find-Module
Find-RoleCapability
Find-Script
Generate-VersionInfo
Get-CompatibleVersionAddtionaPropertiesStr
Get-ComplexResourceQualifier
Get-ConfigurationErrorCount
Get-DscResource
Get-DSCResourceModules
Get-EncryptedPassword
Get-InnerMostErrorRecord
Get-InstalledModule
Get-InstalledScript
Get-MofInstanceName
Get-MofInstanceText
Get-PositionInfo
Get-PSCurrentConfigurationNode
Get-PSDefaultConfigurationDocument
Get-PSMetaConfigDocumentInstVersionInfo
Get-PSMetaConfigurationProcessed
Get-PSRepository
Get-PSTopConfigurationName
Get-PublicKeyFromFile
Get-PublicKeyFromStore
GetCompositeResource
GetImplementingModulePath
GetModule
GetPatterns
GetResourceFromKeyword
GetSyntax
help
ImportCimAndScriptKeywordsFromModule
ImportClassResourcesFromModule
Initialize-ConfigurationRuntimeState
Install-Module
Install-Script
IsHiddenResource
IsPatternMatched
more
New-DscChecksum
New-ScriptFileInfo
Node
oss
Pause
prompt
PSConsoleHostReadline
Publish-Module
Publish-Script
ReadEnvironmentFile
Register-PSRepository
Save-Module
Save-Script
Set-NodeExclusiveResources
Set-NodeManager
Set-NodeResources
Set-NodeResourceSource
Set-PSCurrentConfigurationNode
Set-PSDefaultConfigurationDocument
Set-PSMetaConfigDocInsProcessedBeforeMeta
Set-PSMetaConfigVersionInfoV2
Set-PSRepository
Set-PSTopConfigurationName
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
Convert-Path
ConvertFrom-Csv
ConvertFrom-Json
ConvertFrom-SecureString
ConvertFrom-StringData
ConvertTo-Csv
ConvertTo-Html
ConvertTo-Json
ConvertTo-SecureString
ConvertTo-Xml
Copy-Item
Copy-ItemProperty
Debug-Job
Debug-Process
Debug-Runspace
Disable-PSBreakpoint
Disable-RunspaceDebug
Enable-PSBreakpoint
Enable-RunspaceDebug
Enter-PSSession
Exit-PSSession
Export-Alias
Export-Clixml
Export-Csv
Export-FormatData
Export-ModuleMember
Export-PSSession
Find-Package
Find-PackageProvider
ForEach-Object
Format-Custom
Format-Hex
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-FileHash
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-PfxCertificate
Get-Process
Get-PSBreakpoint
Get-PSCallStack
Get-PSDrive
Get-PSProvider
Get-PSReadlineKeyHandler
Get-PSReadlineOption
Get-PSSession
Get-Random
Get-Runspace
Get-RunspaceDebug
Get-TimeZone
Get-TraceSource
Get-TypeData
Get-UICulture
Get-Unique
Get-Uptime
Get-Variable
Get-Verb
Group-Object
Import-Alias
Import-Clixml
Import-Csv
Import-LocalizedData
Import-Module
Import-PackageProvider
Import-PowerShellDataFile
Import-PSSession
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-Guid
New-Item
New-ItemProperty
New-Module
New-ModuleManifest
New-Object
New-PSDrive
New-PSRoleCapabilityFile
New-PSSession
New-PSTransportOption
New-TemporaryFile
New-TimeSpan
New-Variable
Out-Default
Out-File
Out-Host
Out-Null
Out-String
Pop-Location
Push-Location
Read-Host
Receive-Job
Register-ArgumentCompleter
Register-EngineEvent
Register-ObjectEvent
Register-PackageSource
Remove-Alias
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
Send-MailMessage
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-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
Trace-Command
Uninstall-Package
Unregister-Event
Unregister-PackageSource
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

 

 

Get-Date を打ってみたところ、実行結果は Windows Powershell 5.1 と全く同じ・・・ ではなく、曜日も表示されました。

2018年1月13日 土曜日 21:55:09

 

 

(Get-Date).Day は、Windows と全く同じです。

13

 

 

なお、ターミナル上で動作しているため「ifconfig」といったmacOSのコマンドが実行可能で、逆に「ipconfig」は使えませんでした。

 

 

これからも色々と試していきたいと思います。