その理由として昔いやになった問題が解決したから
それは
①管理者権限で起動できない
su. sudo みたいなことがしたい。
②セッションが終了するとhisotryが消える
bashみたいに残せ(+矢印キーが使いたい)
③OSのアップデートなどの機能がない
本当は apt や yum みたいなことがしたい
の3個だ。
まず最初の管理者権限で起動だが、これは、以下のようにrunas でadministratorを指定すればOK
PS C:\Users\kouji> runas.exe /env /user:administrator powershell
administrator のパスワードを入力してください:
powershell をユーザー "KOUJI-PC\administrator" として開始しています...
PS C:\Users\kouji>
環境を引き継ぎたくないなら/env を抜きでadministrator のパスワードを入力してください:
powershell をユーザー "KOUJI-PC\administrator" として開始しています...
PS C:\Users\kouji>
runas.exe /user:administrator powershell
とする。
これをすると新しいWindowsが立ち上がる。それをやめて同じshellの窓で権限を替えるやりかたは不明
後で知ったが Start-Process powershell.exe -Verb runas のやり方もある。
このほうがすっきりしてていいかも。
つぎにセッションを超えて履歴を残す件
http://orsontyrell.blogspot.jp/2013/11/true-powershell-command-history.html
ここにやり方は書いてある
つまり
①https://github.com/psget/psget/
から
PsGet.psm1をダウンロード
(分かりにくいが 右のDownload zipつまり
https://github.com/psget/psget/archive/master.zip
をダウンロードして解凍してPsGet.psm1を得る)
②次にこれをコピーする場所を知る。それは、
PS C:\Users\kouji> $env:PSModulePath
C:\Users\kouji\Documents\WindowsPowerShell\Modules\;C:\windows\system32\WindowsPowerShell\v1.0\Modules\
PS C:\Users\kouji>
のように $env:PSModulePathで分かるC:\Users\kouji\Documents\WindowsPowerShell\Modules\;C:\windows\system32\WindowsPowerShell\v1.0\Modules\
PS C:\Users\kouji>
C:\Users\kouji\Documents\WindowsPowerShell\Modules\
と
C:\windows\system32\WindowsPowerShell\v1.0\Modules\
のどちらでもいいのだが
C:\Users\kouji\Documents\WindowsPowerShell\Modules\
にコピーすることにする。
③コピー
C:\Users\kouji\Documents\WindowsPowerShell\Modules\
に
\PsGet\を作りPsGet.psm1をコピー
つまり
C:\Users\kouji\Documents\WindowsPowerShell\Modules\PsGet\PsGet.psm1
にコピー
③モジュールを認識させる
PS C:\Users\kouji> Import-Module PsGet
④試しに使う
PS C:\Users\kouji> install-module PsUrl
PS C:\Users\kouji> update-module
Module PsGet was successfully updated.
Module PsUrl was successfully updated.
Module PsUrl was successfully updated.
PS C:\Users\kouji>
⑤モジュール追加PS C:\Users\kouji> update-module
Module PsGet was successfully updated.
Module PsUrl was successfully updated.
Module PsUrl was successfully updated.
PS C:\Users\kouji>
PS C:\Users\kouji> install-module PSReadline
⑥プロファイルの場所を知る
PS C:\Users\kouji> $profile
C:\Users\kouji\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
PS C:\Users\kouji>
⑦書き換えC:\Users\kouji\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
PS C:\Users\kouji>
もしかするとフォルダがないかもしれない、ない場合はフォルダを作成
notepad $profile
で書き変え(もしくは追加)
中身はこれ
$MaximumHistoryCount = 31KB
$ImportedHistoryCount = 0
$HistoryDirPath = "c:\script\"
$HistoryFileName = "history.clixml"
if (!(Test-Path $HistoryDirPath -PathType Container))
{ New-Item $HistoryDirPath -ItemType Directory }
Register-EngineEvent PowerShell.Exiting -Action {
$TotalHistoryCount = 0
Get-History | ? {$TotalHistoryCount++;$true}
$RecentHistoryCount = $TotalHistoryCount - $ImportedHistoryCount
$RecentHistory = Get-History -Count $RecentHistoryCount
if (!(Test-path ($HistoryDirPath + $HistoryFileName)))
{
Get-History | Export-Clixml ($HistoryDirPath + $HistoryFileName)
}else
{
$OldHistory = Import-Clixml ($HistoryDirPath + $HistoryFileName)
$NewHistory = @($OldHistory + $RecentHistory)
$NewHistory | Export-Clixml ($HistoryDirPath + $HistoryFileName)
}
}
if (Test-path ($HistoryDirPath + $HistoryFileName))
{
Import-Clixml ($HistoryDirPath + $HistoryFileName) | ? {$count++;$true} |Add-History
Write-Host -Fore Green "`nLoaded $count history item(s).`n"
$ImportedHistoryCount = $count
}
# Importing PSReadline must come AFTER you load your command history
if ($host.Name -eq 'ConsoleHost')
{
Import-Module PSReadline
}
# if you don't already have this configured...
Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward
⑧c:\scriptのフォルダ作成$ImportedHistoryCount = 0
$HistoryDirPath = "c:\script\"
$HistoryFileName = "history.clixml"
if (!(Test-Path $HistoryDirPath -PathType Container))
{ New-Item $HistoryDirPath -ItemType Directory }
Register-EngineEvent PowerShell.Exiting -Action {
$TotalHistoryCount = 0
Get-History | ? {$TotalHistoryCount++;$true}
$RecentHistoryCount = $TotalHistoryCount - $ImportedHistoryCount
$RecentHistory = Get-History -Count $RecentHistoryCount
if (!(Test-path ($HistoryDirPath + $HistoryFileName)))
{
Get-History | Export-Clixml ($HistoryDirPath + $HistoryFileName)
}else
{
$OldHistory = Import-Clixml ($HistoryDirPath + $HistoryFileName)
$NewHistory = @($OldHistory + $RecentHistory)
$NewHistory | Export-Clixml ($HistoryDirPath + $HistoryFileName)
}
}
if (Test-path ($HistoryDirPath + $HistoryFileName))
{
Import-Clixml ($HistoryDirPath + $HistoryFileName) | ? {$count++;$true} |Add-History
Write-Host -Fore Green "`nLoaded $count history item(s).`n"
$ImportedHistoryCount = $count
}
# Importing PSReadline must come AFTER you load your command history
if ($host.Name -eq 'ConsoleHost')
{
Import-Module PSReadline
}
# if you don't already have this configured...
Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward
⑨powershellをいったん終了して起動
うまくいけばこんなメッセージが起動時でる
Windows PowerShell
Copyright (C) 2012 Microsoft Corporation. All rights reserved.
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
2 PowerShell.E... NotStarted False ...
Loaded 63 history item(s).
こんな感じでヒストリがロードされるCopyright (C) 2012 Microsoft Corporation. All rights reserved.
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
2 PowerShell.E... NotStarted False ...
Loaded 63 history item(s).
最後にMicrosoft UpdateをShellからするやりかた
情報元はこれ
http://blogs.technet.com/b/junichia/archive/2013/05/21/3573861.aspx
①まずモジュールを落とす
http://gallery.technet.microsoft.com/scriptcenter/2d191bcd-3308-4edd-9de2-88dff796b0bc
ここの
http://gallery.technet.microsoft.com/scriptcenter/2d191bcd-3308-4edd-9de2-88dff796b0bc/file/41459/43/PSWindowsUpdate.zip
②これを解凍したあとで同じくモジュールパスにコピー
結果こうなる
PS C:\Users\kouji\Documents\WindowsPowerShell\Modules\PSWindowsUpdate> dir
ディレクトリ: C:\Users\kouji\Documents\WindowsPowerShell\Modules\PSWindowsUpdate
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2013/12/23 8:53 4198 Add-WUOfflineSync.ps1
-a--- 2013/12/23 10:44 7774 Add-WUServiceManager.ps1
-a--- 2013/12/23 8:53 8430 Get-WUHistory.ps1
-a--- 2013/12/23 11:18 70258 Get-WUInstall.ps1
-a--- 2013/12/23 8:53 1919 Get-WUInstallerStatus.ps1
-a--- 2013/12/24 13:11 47136 Get-WUList.ps1
-a--- 2013/12/23 9:31 7156 Get-WURebootStatus.ps1
-a--- 2013/12/23 8:53 2343 Get-WUServiceManager.ps1
-a--- 2013/12/23 8:53 1647 Get-WUUninstall.ps1
-a--- 2013/12/24 13:14 42866 Hide-WUUpdate.ps1
-a--- 2013/12/23 8:53 6020 Invoke-WUInstall.ps1
-a--- 2013/12/23 8:53 5095 PSWindowsUpdate.Format.ps1xml
-a--- 2013/12/24 13:14 9130 PSWindowsUpdate.psd1
-a--- 2013/12/23 13:30 252 PSWindowsUpdate.psm1
-a--- 2013/12/23 8:53 3089 Remove-WUOfflineSync.ps1
-a--- 2013/12/23 10:44 5256 Remove-WUServiceManager.ps1
-a--- 2013/12/23 14:47 19582 Update-WUModule.ps1
PS C:\Users\kouji\Documents\WindowsPowerShell\Modules\PSWindowsUpdate>
こんな感じディレクトリ: C:\Users\kouji\Documents\WindowsPowerShell\Modules\PSWindowsUpdate
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2013/12/23 8:53 4198 Add-WUOfflineSync.ps1
-a--- 2013/12/23 10:44 7774 Add-WUServiceManager.ps1
-a--- 2013/12/23 8:53 8430 Get-WUHistory.ps1
-a--- 2013/12/23 11:18 70258 Get-WUInstall.ps1
-a--- 2013/12/23 8:53 1919 Get-WUInstallerStatus.ps1
-a--- 2013/12/24 13:11 47136 Get-WUList.ps1
-a--- 2013/12/23 9:31 7156 Get-WURebootStatus.ps1
-a--- 2013/12/23 8:53 2343 Get-WUServiceManager.ps1
-a--- 2013/12/23 8:53 1647 Get-WUUninstall.ps1
-a--- 2013/12/24 13:14 42866 Hide-WUUpdate.ps1
-a--- 2013/12/23 8:53 6020 Invoke-WUInstall.ps1
-a--- 2013/12/23 8:53 5095 PSWindowsUpdate.Format.ps1xml
-a--- 2013/12/24 13:14 9130 PSWindowsUpdate.psd1
-a--- 2013/12/23 13:30 252 PSWindowsUpdate.psm1
-a--- 2013/12/23 8:53 3089 Remove-WUOfflineSync.ps1
-a--- 2013/12/23 10:44 5256 Remove-WUServiceManager.ps1
-a--- 2013/12/23 14:47 19582 Update-WUModule.ps1
PS C:\Users\kouji\Documents\WindowsPowerShell\Modules\PSWindowsUpdate>
③モジュールを認識させる
PS C:\Users\kouji> Import-Module pswindowsupdate
④動作テスト
Get-Command -Module pswindowsupdate
で一覧が出る。ついでにモジュールのアップデート
update-wumodule
⑤microsoft Updateをやってみる管理者権限で端末を起動後
get-wulistで更新一覧取得
get-wuinstallでアップデート
後はよく使うコマンド(firefoxとか)にaliasを切ればいける環境ができるはずだ。
grepとかsshとかも探せばあったはず。
あとこれ大文字小文字を区別しないのに注意
※)環境変数一覧などの取得について
PowerShellでは環境変数などのリソースを仮想ドライブとして管理する
その仮想ドライブは以下のようにするとリストできる
PS C:\Users\kouji> Get-PSDrive
Name Used (GB) Free (GB) Provider Root CurrentLocation
Alias Alias
C 184.78 11.79 FileSystem C:\
Cert Certificate \
D 14.85 14.14 FileSystem D:\
E 205.60 15.70 FileSystem E:\
Env Environment
F FileSystem F:\
Function Function
HKCU Registry HKEY_CURRENT_USER
HKLM Registry HKEY_LOCAL_MACHINE
Variable Variable
WSMan WSMan
X 1583.28 279.61 FileSystem \\F-SERVER\disk1_pt1
このうち環境変数はEnvドライブにある。だからName Used (GB) Free (GB) Provider Root CurrentLocation
Alias Alias
C 184.78 11.79 FileSystem C:\
Cert Certificate \
D 14.85 14.14 FileSystem D:\
E 205.60 15.70 FileSystem E:\
Env Environment
F FileSystem F:\
Function Function
HKCU Registry HKEY_CURRENT_USER
HKLM Registry HKEY_LOCAL_MACHINE
Variable Variable
WSMan WSMan
X 1583.28 279.61 FileSystem \\F-SERVER\disk1_pt1
get-childitem Env:
でOKもしくは
Env:
でドライブ変えた後で
get-childitemとかlsとかdirで列記
0 件のコメント:
コメントを投稿