Rock'n'Hack ブログ

それなりハッカーを目指して、もろもろのメモ。bloggerから引っ越しました。

PowerShell で任意のサイズのテストファイルを複数作成する

ただのワンライナー。for文って久々に使った。

  • 1MBファイルを10個作成する場合
for ($i=0; $i -lt 10; $i++){ fsutil.exe file createnew testfile_$i 1048576 }

windows10でIMEが無効になった場合の対処

windows10で割りと頻繁にIMEが無効になってしまって、
そのたびリブートしたりして相当なストレスだったが、下記で有効化出来ることが分かった。

「ファイル名を指定して実行」 > ctfmon.exe

Windows10のPowerShellコンソールでaliasを設定する方法

  • Windowsでちょいちょいgitを使う際にpowershellを利用していたのだけど、いい加減 git diff とか素直に打つのが嫌になった。 g d で済ませたい。
  • dのようなgitコマンドのaliasは、linux同様.gitconfigに設定すればOK。
  • gの部分をどうすればいいか調べたところ、ちょっとハマったのでメモ。

powershellプロファイル作成

powershellにも.bashrc的な設定ファイルがあるとのことなので、まずはそれを作る。

New-item –type file –force $profile

上記コマンドを実行すると、下記にプロファイルが作成される。 これがpowershellコンソール起動時に毎回読み込まれる。

  • %USERPROFILE%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

 

プロファイルにaliasを登録

作成後は中身は空なので、Set-Aliasコマンドを記載し、起動時にaliasが設定されるようにする。

Set-Alias g git

とりあえずこれでOK、意気揚々とpowershellを起動してみると…

Windows PowerShell
Copyright (C) 2015 Microsoft Corporation. All rights reserved.

. : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\***\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 を読み込む
ことができません。詳細については、「about_Execution_Policies」(http://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:3
+ . 'C:\Users\***\Documents\WindowsPowerShell\Microsoft.PowerShel ...
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess
PS C:\Users\***>

ダメ。どうも Powershell には実行ポリシーというものがあるらしく、デフォルトではRestrictedというpowershellスクリプトの実行許可が無い状態になっているらしい。

> Get-ExecutionPolicy
Restricted

 

Powershell 実行ポリシー変更

仕方が無いので、実行ポリシーを変更する。管理者権限でpowershellを実行してコマンド実行。

> Set-ExecutionPolicy RemoteSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies のヘルプ トピック
(http://go.microsoft.com/fwlink/?LinkID=135170) で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y

> Get-ExecutionPolicy
RemoteSigned

そして再度実行…

Windows PowerShell
Copyright (C) 2015 Microsoft Corporation. All rights reserved.

. : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\***\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 を読み込む
ことができません。詳細については、「about_Execution_Policies」(http://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:3
+ . 'C:\Users\***\Documents\WindowsPowerShell\Microsoft.PowerShel ...
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess
PS C:\Users\***>

まだダメ。powershell開き直すとダメになる。どうも Windows10 の場合はレジストリを変更する必要があるらしい(2016/06/27現在)。
参考: windows 10 - Cannot set Powershell ExecutionPolicy for CurrentUser - Server Fault

 

レジストリ作成

  • キー: HKEY_CURRENT_USER\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
  • 値: ExecutionPolicy(文字列)
  • 値のデータ: RemoteSigned

これを設定すると晴れて、

PS C:\WINDOWS\system32> g
usage: git [--version] [--help] [-C <path>] [-c name=value]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]

ようやく alias が設定された! 中々大変だった…

 

まとめ

New-item –type file –force $profile
⇒ %USERPROFILE%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
  • プロファイルにaliasを登録
Set-Alias g git
  • レジストリ作成
    • キー: HKEY_CURRENT_USER\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
    • 値: ExecutionPolicy(文字列)
    • 値のデータ: RemoteSigned

 

おしまい。