powershell(その4)

Get-Member を使うとよさげ
    • 使用例

Get-Host

PS C:\> Get-Host
Name             : ConsoleHost
Version          : 5.0.10514.6
(略)
CurrentCulture   : ja-JP
CurrentUICulture : ja-JP
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled  : True
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

Get-Hostってどんなメソッドやプロパティが使えるの?

PS C:\> Get-Host | Get-Member
   TypeName: System.Management.Automation.Internal.Host.InternalHost
Name                   MemberType Definition
----                   ---------- ----------
EnterNestedPrompt      Method     void EnterNestedPrompt()
Equals                 Method     bool Equals(System.Object obj)
ExitNestedPrompt       Method     void ExitNestedPrompt()
GetHashCode            Method     int GetHashCode()
GetType                Method     type GetType()
NotifyBeginApplication Method     void NotifyBeginApplication()
NotifyEndApplication   Method     void NotifyEndApplication()
PopRunspace            Method     void PopRunspace(), void IHostSupportsInte...
PushRunspace           Method     void PushRunspace(runspace runspace), void...
SetShouldExit          Method     void SetShouldExit(int exitCode)
ToString               Method     string ToString()
CurrentCulture         Property   cultureinfo CurrentCulture {get;}
CurrentUICulture       Property   cultureinfo CurrentUICulture {get;}
DebuggerEnabled        Property   bool DebuggerEnabled {get;set;}
InstanceId             Property   guid InstanceId {get;}
IsRunspacePushed       Property   bool IsRunspacePushed {get;}
Name                   Property   string Name {get;}
PrivateData            Property   psobject PrivateData {get;}
Runspace               Property   runspace Runspace {get;}
UI                     Property   System.Management.Automation.Host.PSHostUs...
Version                Property   version Version {get;}

見つけたメソッド(Method)やプロパティ(Property)を使ってみる

PS C:\> (Get-Host).Version
Major  Minor  Build  Revision
-----  -----  -----  --------
5      0      10514  6
PS C:\> (Get-Host).Version.Major
5
PS C:\> (Get-Host).ToString()
System.Management.Automation.Internal.Host.InternalHost

vpsでLinux再学習

さくらのvps

やっぱりやらないとどんどんどんどん忘れていく。。。
ってことで4,5年ぶりに"さくらのVPS"を契約しようか思案中。
# メモ帳代わりにvimでイロイロと書き溜めるにも良い場所、かな、と思いつつ。。。

さわるなら当然CentOSも7系!と思いつつも体になじまないコマンドがコワイ。。。

powershell(その3)

powershellIPアドレス計算(失敗)

PS C:\> $ipaddr = "10.10.10.10"
PS C:\> ($ipaddr.GetType()).name -eq [ipaddress]
False
PS C:\> ($ipaddr.GetType()).name
String

だとうまくいかない

powershellIPアドレス計算(成功)

PS C:\> $ipaddr = [ipaddress]"10.10.10.10"
PS C:\> ($ipaddr.GetType()).name -eq [ipaddress]
True
PS C:\> ($ipaddr.GetType()).name
IPAddress

IPアドレスサブネットマスクからネットワークアドレスを計算

PS C:\> $ipaddr = [ipaddress]"10.10.10.10"
PS C:\> $netmask =[ipaddress] "255.255.255.0"
PS C:\> ([ipaddress]($ipaddr.Address -band $netmask.Address)).IPAddressToString
10.10.10.0

cidr からネットマスクな形式への変換(失敗)

ネットマスクをネットマスクらしいビット列で扱ってくれてなさそう。。。

PS C:\Users\eiji> $addr = [ipaddress]"255.255.255.255"
PS C:\Users\eiji> [convert]::tostring($addr.Address,2)
11111111111111111111111111111111
PS C:\Users\eiji> ([convert]::tostring($addr.Address,2)).length
32
PS C:\Users\eiji> $addr = [ipaddress]"255.255.255.0"
PS C:\Users\eiji> [convert]::tostring($addr.Address,2)
111111111111111111111111
PS C:\Users\eiji> ([convert]::tostring($addr.Address,2)).length
24
PS C:\Users\eiji> $addr = [ipaddress]"255.255.0.0"
PS C:\Users\eiji> [convert]::tostring($addr.Address,2)
1111111111111111
PS C:\Users\eiji> ([convert]::tostring($addr.Address,2)).length
16
PS C:\Users\eiji> $addr = [ipaddress]"255.0.0.0"
PS C:\Users\eiji> [convert]::tostring($addr.Address,2)
11111111
PS C:\Users\eiji> ([convert]::tostring($addr.Address,2)).length
8
PS C:\Users\eiji> $addr = [ipaddress]"255.255.255.128"
PS C:\Users\eiji> [convert]::tostring($addr.Address,2)
10000000111111111111111111111111
PS C:\Users\eiji> ([convert]::tostring($addr.Address,2)).length
32
PS C:\Users\eiji> $addr = [ipaddress]"255.255.128.0"
PS C:\Users\eiji> [convert]::tostring($addr.Address,2)
100000001111111111111111
PS C:\Users\eiji> ([convert]::tostring($addr.Address,2)).length
24

cidr からネットマスクな形式への変換(成功)

自力ではちょっと挫折。以下を参照。。
PowerShell で IPv4 アドレス計算

PS C:\> $subnet = $null
PS C:\> $cidr = 25
PS C:\> $cidr
25

for( $i = 0 ; $i -lt 4 ; $i++ ){
    if( $cidr -ge 8 ){
        $subnet += "255"
        $cidr -= 8
    }
    elseif($cidr -le 0){
        $subnet += "0"
        $cidr = 0
    }
    else{
        $node = [Math]::Pow(2,8 - $cidr)
        $subnetinoctet = 256 - $node
        $subnet += [string]$subnetinoctet
        $cidr = 0
    }
    
    if( $i -ne 3 ){
        $subnet += "."
    }
}

PS C:\> $subnet
255.255.255.128

powershell(その2)

powershell (その1)

powershellのバージョン確認

  • powershellのバージョン確認方法は以下の方法がある
Get-Hostコマンド  
$PSVersionTableの参照  
  • "$PSVersionTable"を参照する方法はイロイロと対応が容易(なように感じた。)
PS C:\> $PSVersionTable.psversion  
Major  Minor  Build  Revision  
-----  -----  -----  --------  
2      0      -1     -1  
PS C:\> $PSVersionTable.psversion.Major  
2  

powershellバージョンアップ

  • powershell5 取得

公式URLからダウンロード

  • インストール
    • 再起動が必要だった
    • ものすごく待ち時間が長かったから寝て放置したら終わってた。
  • 結果
PS C:\Users\eiji> $PSVersionTable.psversion
Major  Minor  Build  Revision
-----  -----  -----  --------
5      0      10514  6       
PS C:\Users\eiji> $PSVersionTable.psversion.Major
5

お勉強(今後1年くらい)

イロイロとお勉強をしないとなぁ、と思いつつ、ダラダラとしているのでやりたいことを列挙

  • 語学(別ブログに記載) -- 英語 --- とりあえずTOEIC受験 -- フランス語 --- フランス語検定受験 -- ロシア語 --- ロシア語検定?

  • IT(このブログで記載) -- プログラム --- powershell --- javascript -- OS系 --- linux kernel3系/CentOS7系情報取得 --- Windows Server情報取得 -- ネットワーク --- CCNP更新

  • その他(このブログで記載?) -- 簿記2級&1級 -- 中小企業診断士