ラベル Chocolatey の投稿を表示しています。 すべての投稿を表示
ラベル Chocolatey の投稿を表示しています。 すべての投稿を表示

2016年4月3日日曜日

PowerShellまとめ

久々WINDOWSネタだ。
ここでPowerShellについてまとめておきたい。


※まず最初にすべきこととしてスクリプトが動くようにするってのがある。
それにはこれ
Set-ExecutionPolicy RemoteSigned
管理者権限で実行すること

※次の作業としてフォントを変更する。
全角文字を入れた時おかしくなるため
 
このようにPOWERSHELLの左上アイコンクリックー>プロパティで出来る
MS ゴシックを選択

※次にすべきことしてバージョンを確認する
それにはこれ
$PSVersionTable
もしくは
$Host.version

$PSVersionTableだと出力は
Name                           Value
----                           -----
PSVersion                      5.0.10586.117
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.10586.117
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
このPSVersion がそれ

$Host.version
だと
Major  Minor  Build  Revision
-----  -----  -----  --------
5      0      10586  117
みたいに出る
これがそのOSの最新であるのを確認
windows7 以降だと今現在5になる
というかぜひ5にすべきだ。便利なので。 

https://www.microsoft.com/en-us/download/details.aspx?id=50395
(英語のみ)



※次の作業としてchocolatey(https://chocolatey.org/)をインストールする。
パッケージ管理だ。以下は要管理者権限
POWERSHELL5 だと 旧来の
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
 の他に

Get-PackageProvider Chocolatey -ForceBootstrap
で使えるようにして
Get-PackageSource 
で確認する方法もある。これをonegetというらしい。
ただchocolateyだとパッケージのアップデート可能だがonegetだとできないみたいだ。


※次の作業として コマンド履歴をpowershell終了しても残るように変更する。
終了しあとまた次使うときいちいち打ち込むのはやだろう。
それにはモジュールpsreadlineを入れればいい
cinst psget
install-module  psreadline
でOK 
Powershell4だといろいろ小細工する必要があったが 5 でなくなった。ちょっとうれしい。

※次にドライブを確認する
Get-PSDrive
でOK

 Name           Used (GB)     Free (GB) Provider      Root
----           ---------     --------- --------      ----
Alias                                  Alias
C                 187.86          8.71 FileSystem    C:\
Cert                                   Certificate   \
D                  25.57          3.42 FileSystem    D:\
Env                                    Environment
F                                      FileSystem    F:\
Function                               Function
G                   0.04          0.16 FileSystem    G:\
HKCU                                   Registry      HKEY_CURRENT_USER
HKLM                                   Registry      HKEY_LOCAL_MACHINE
I                 195.11         26.19 FileSystem    I:\
Variable                               Variable
WSMan                                  WSMan

みたいにでる。

ここで 物理 ドライブ(C:\、D:\...)以外のものがあることに注意
すべてのドライブにcd で行けてlsで確認できるのでしてほしい。

ここで覚えておくべきなのは
envで環境変数にアクセスでき
 Variableで変数にアクセス出来ることだ。  
例えば echo $variable:profile でプロファイルのパスが出る
これは 省略して   echo $profile でも OK 

ちなみに 値は 
 C:\Users\kouji\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1



※次にプロファイルを編集
このプロファイルだがbashとかと同じく起動時に読み込まれるスクリプト
なんでも書けるのでalias とかfunction を切っておく

まずファイルを作る
New-item –type file –force $profile

編集
notepad $profile

中身はこんな感じ
Set-Alias grep Select-String
Set-Alias firefox "C:\Program Files\Mozilla Firefox\firefox.exe"

#再起動
function reboot(){
  shutdown -r -t 0
}

#管理者権限で起動
function su
{
    Start-Process powershell.exe -Verb runas
}


※次にSSHする方法
powershellでSSHするには
Win32-OpenSSH
で可能
名前に反して64bitに対応している
インストールは
cinst Win32-OpenSSH
でOK
ssh ....
が使える。
ただし事前に文字コードを変える必要がある(LINUXはほとんどUTF8なので)
 [Console]::OutputEncoding = [Text.Encoding]::UTF8;
でOK 

※次に画面の色


あと色に関するものは
$Host.UI.RawUI.BackgroundColor
$Host.UI.RawUI.ForegroundColor
$Host.PrivateData.ErrorForegroundColor
$Host.PrivateData.ErrorBackgroundColor
$Host.PrivateData.WarningForegroundColor
$Host.PrivateData.WarningBackgroundColor
$Host.PrivateData.DebugForegroundColor
$Host.PrivateData.DebugBackgroundColor
$Host.PrivateData.VerboseForegroundColor
$Host.PrivateData.VerboseBackgroundColor
$Host.PrivateData.ProgressForegroundColor
$Host.PrivateData.ProgressBackgroundColor
[console]::ForegroundColor
[console]::BackgroundColor
[System.Console]::ForegroundColor
[System.Console]::BackgroundColor

Get-PSReadlineOption
Set-PSReadlineOption -TokenKind Command -ForegroundColor Magenta
Set-PSReadlineOption -TokenKind Comment -ForegroundColor Black -BackgroundColor White



モジュールについて
モジュールの追加で機能拡張可能
そのパスは
$env:PSModulePath
インストール可能なモジュールのリスト
find-module
検索
find-module XXXX
インストールされたモジュールのリスト
Get-Module -ListAvailable
モジュールインストール
install-module XXXXX

モジュールのコマンドリストアップ
get-command -module XXXX
 

  
※最後に
己自身が勉強する必要がある。

 


    
      

2014年6月11日水曜日

windows版パッケージ管理ソフトChocolateyについて

久しぶりにpowershellについて書きたい。
今回書くのはWindowsでもLinuxのYumやAptみたいにパッケージ管理できるという話
名前はChocolateyといいます。https://chocolatey.org/
この手のソフトをうまく使えばバージョンアップのウザさから開放されます。
バージョンアップのウザさとは
①アプリを立ち上げて更新チェックするメニュー、ボタンを押すと、しばらく何もできなくなるとか
②古いので作者のサイトに行って新しいバージョンをチェックするべき?とか考えて見に行くとか
  作者のWEBを開くとどこに新しいのがあるのかさっぱりわからないとか
③アプリを立ち上げた時 新しいバージョンが有ります更新しますか?とかポップアップが出たりするとか
④OSを立ち上げた時同じように 新しいバージョンが有ります更新しますか?とか聞かれたりするとか
⑤作業中にポップアップとかバルーンが出てきて  新しいバージョンが有ります更新しますか?とか聞かれたりするとか
⑥インストールするといらないものまでおまけに入ってしまってそれの修復ができないのでWEBで調べるとか
⑦突然えらく重くなったと思ったら勝手にアップデートされてたとか
の一連の思考を中断する動きだ。

そもそもやりたいことがあるからOS,アプリを起動しているのに、
 こんなことをしているうちにやりたかったことを忘れることもありがち(それは別の問題か)
それを防ぐために付箋アプリを起動するとそこで更新しますか?とか聞かれたりする。
そういう一連のウザイダメな流れから永久に開放されたい。

要するに自分が許した時間以外は全く変わってほしくないわけだ。そして変わるときはOS、アプリ全部一斉に更新したい。

現在実際に使われるLinux,iPhone,iPad,Android
にはもれなくパッケージ管理ソフト(アプリの更新を管理し一括で更新する方法)が付いている
iOSならApple Store や
AndroidならGoogle Play
Linuxならyumやapt
などがそれ。

この流れに乗らないものとしてMac,Windowsがあるが
MACの場合MacPort,Apple Storeなどでこの流れに乗りつつあるし、
Windowsの場合もMicrosoft Storeとかでこの方向で行くらしい。
がどっちにせよすべてのアプリの網羅はできないだろう。

これに対してパッケージ管理が完全なのがlinuxの yumやapt。
このコマンドを使えばOSとアプリが一気に更新される。ソースビルドをやめてこれ一本でも充分やっていける。
それに比べるとMac,Android,iOSの場合はOS、アプリの更新はそれぞれ別機能だったりするので
ちょっとややこしい
Windowsにおいてこれにあたる機能はWindows Update(Microsoft update)だと思うが、
この機能ではOS、Microsoft関連ソフト、一部ドライバしか更新されない
例えばOfficeとかvisual studioとかだ。
インストールされたアプリの一覧はコントロールパネルの"アプリケーションの追加と削除"で見れるから、本当はここでWindows Updateとアプリの更新が一括でできればよい。
しかし今のところそんな機能はない。つける予定があるのかも不明

そこでChocolateyの出番となる。これを使うとPowerShellからアプリ更新チェックがコマンド一発でできるようになる。
PowershellからOSの更新を行う方法はもう説明したから、
http://kokawa2003.blogspot.jp/2014/03/powershellmicrosoft-updatehistory.html
更新チェックそのものが一応powershellですべてできるってことになる。

Chocolateyのサイトはこれ
https://chocolatey.org/
まずインストールはこれをコマンドプロンプトから実行。
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin
インストールするとPowershell やコマンドプロンプトからつかえるようになる。

使い方は
①アプリのインストール
例:notepad++のインストール
cinst notepadplusplus
 のようにタイプするとインストールされる。ここでcinst の後ろの文字列をパッケージ名という。
cinst [パッケージ名]
ということ。複数のときはそのまま並べて書く
だからこのパッケージ名を見つければ何でもコマンド一発でインストールできる
とりあえず最初に入れるアプリとしては
cinst ChocolateyGUI
がいいと思う。
ChocolateyのGUIだ
なおパッケージ名一覧は
https://chocolatey.org/packages
にすべてある。
※管理者権限で実行しないとき管理者権限を取りに行くがOKとしても なぜかうまくインストール出来ないことがある

②パッケージ名検索
choco search ???
choco list ???
で部分一致する
パッケージ名を返す。なお
choco list
で現在のChocolateyの管理する全パッケージを返す
。現在1899個らしい。
PCにインストールされたアプリ一覧は
choco list -lo
でOK

③アンインストール
cuninst [パッケージ名]

④更新
cup all
   で全インストール済みパッケージ更新
cup
    でChocolatey自身を更新 
cup [パッケージ名]
   でそのパッケージ更新

ていう感じ。

⑤HELP
choco help

なおインインストールのとき
すでにOSにChocolateyを使わずインストールされてたらどうなる?
ってことが気になると思う
この答えはインストールされてるのが最新でないときはそれが上書きインストール
最新の時はChocolatey管理ファイルのみインストールされる。というもの

結局コントロールパネルの
アプリケーションの追加と削除を見て全部Chocolateyに切り替えた。
なかなかいい感じで満足。
これでOSとアプリともにPowerShellから一括で更新できるので便利。

今考えているのはWindows updateとChocolateyの更新がMS系のアプリで重なっても
矛盾しないか?ということ

あと全く別件だがこれで何故かwindows live mail が英語版になった。
これは入れたあとでLangSelectorを実行して言語を設定しないとおかしくなることがある
というMSらしい行き当たりばったりな仕様のせいだった。 
これが私がMSが嫌いな理由の一つ。 

最後にリストしておく
>choco list -lo
7zip 9.22.01.20130618
7zip.commandline 9.20.0.20130618
7zip.install 9.22.01.20130618
adobereader-jp 11.0.07
audacity 2.0.5
autohotkey.portable 1.1.15.00
BetterCredentials 2.0.0.1
Bing 5.0
ccleaner 4.14.4707
ChocolateyGUI 0.11.1
directx 9.0.0.0
ditto 3.18.46
DotNet4.5 4.5.20120822
DotNet4.5.1 4.5.1.20140606
dropbox 2.8.3
Evernote5 5.0.1.1188
ext2fsd 0.52.0.20140511
filezilla 3.8.1
Firefox 29.0.1
flashplayeractivex 13.0.0.214
flashplayerplugin 13.0.0.214
gimp 2.8.10.20140514
git 1.9.2
git.install 1.9.2
GoogleChrome 35.0.1916.114
imgburn 2.5.8.0
javaruntime 7.0.60
lhaplus 1.59.3
line 3.6.0.32
MicrosoftSecurityEssentials 2.0.657.1
mingw 4.8.1.20140107
msysgit 1.7.10.20120526
NugetPackageManager 2.7.41101
nunit 2.6.3
peazip 5.3.1
PowerGUI 3.8.0.129
PowerShell 3.0.20121027
powershell4 4.0.0.20131204
PSWindowsUpdate 1.5.1
python 3.4.1
ruby 2.0.0.48100
SakuraEditor 2.1.1.3
Silverlight 5.0
spybot 2.3.39
sysinternals 2014.05.13
teamviewer 9.0.28223
thunderbird 24.5.0
vlc 2.1.3
windowsessentials 16.4.3508.0209
WindowsLiveInstaller 2012.0.0
WindowsLiveMail 2011.0.0
WindowsLiveWriter 2012.0.0
winmerge 2.14.0
winmerge-jp 2.14.0.43
x2go 4.0.2.0