【Windowsd Powershell Baby Step その1】 2017/03/21 No Comments

以前スクリプトを作成する際に調べたことをまとめて自分宛ての備忘録を作成したいと思います。

Windows Powershellでスクリプトを実行できるようになったので、スクリプトを作成していきます。

まずはスクリプトが動作していることを確認する意味を込めて、コンソールに値を出力するHello Worldスクリプトを作成します。

出力する値は引数を設定して表示しようと思います。

Windowds Powershellのスクリプトで引数を受け取る場合、$argsを使用します。
引数として複数の値が設定される可能性があるため、$argsは配列になっています。

引数の数は、lengthプロパティを参照します。
引数は配列で引き渡されるので0から始まる点に注意が必要です。


# 引数の数を確認
if ($args.length -eq 0){
Write-Host "引数が指定されていない"
    exit 1
} elseif ($args.length -gt 2){
Write-Host "引数が多く指定されています"
    exit 2
}
# 引数を編集して出力
# 標準出力
Write-Host $args[0] $args[1]"!!"
# 戻り値として出力
echo ($args[0] + " " + $args[1] + "!!")
exit 0

実行する場合の引数は下記のように指定します。


PS C:\temp> .\Hello.ps1 Hello world
Hello world !!
Hello world!!

$lastexitcodeにexitで設定した値を参照することが可能です。


PS C:\temp> $lastexitcode
0

 

[関ジャバ] フロントエンド初心者勉強会 in 大阪に参加してきました 2017/02/18 No Comments

[関ジャバ] フロントエンド初心者勉強会 in 大阪に参加してきました。

中之島にある楽天市場さんのカフェテリアスペースを提供していただいたということで、楽天市場さん、ありがとうございます。

今までサーバサイドでしか利用していなかったのですが、ブラウザベースのアプリケーションの開発環境の充実ぶりには驚きました。

しんどい部分もたくさんあるようですが、みなさんとてもいい表情で発表されていました。
幸せな技術者は、いいし仕事するんやろうなと思いました。

フロントエンドの初心者勉強会とあったのですが、かなり高度な話が多く、脳みそ爆発です。
ちょっとお酒でも飲んでクールダウンしたいと思います。

ちなみにVue.js Vue.jsがすごくよさげに感じました。
少しいじってみたいです。

とりあえず周辺の機能についても勉強する必要がありそうで、なかなかハードルが高そうですが。

 

Windows PowerShellを実行したい 2017/01/21 No Comments

今回はCドライブのworkspaceフォルダにtest.ps1と言う名前のスクリプトを実行することとします。
拡張ps1は、Windows Powershellのスクリプトであることを表しています。
下記のようにtest.ps1を編集し保存します。
Windows Powershell ISEに下記のように入力し、スクリプトを実行してみましょう。
しかし、下記のようなエラーメッセージが表示され実行できませんでした。

PS C:\workspace> .\test.ps1

.\test.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル C:\workspace\test.ps1 を読み込むことができません。詳細については、「about_Execution_Polici
es」(http://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ .\test.ps1
+ ~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
これは初期の状態ではスクリプトを実行することが可能なポリシーがポリシーがポリシーが設定されていないためです。

スクリプトを実行するためのポリシーを設定する必要があります。
さきほどのエラーメッセージで表示されているマイクロソフトのウェブサイト(http://go.microsoft.com/fwlink/?LinkID=135170)を確認すると付与できる権限は下記のようになります。
詳細は、マイクロソフトのサイトを確認してください。

Restricted
– 個別のコマンドは許可されますが、スクリプトは実行されません。

AllSigned
– スクリプトを実行できます。
– ローカル コンピューター上で記述されたスクリプトを含むすべてのスクリプトと構成ファイルが、信頼された発行元によって署名されている必要があります。

RemoteSigned
– スクリプトを実行できます。Windows Server 2012 R2 の既定の実行ポリシーです。
– インターネット (電子メールとインスタント メッセージング プログラムを含む) からダウンロードされたスクリプトと構成ファイルが、信頼された発行元によってデジタル署名されている必要があります。
– ローカル コンピューター上で記述された (インターネットからダウンロードされていない) スクリプトには、デジタル署名は必要ありません。
– Unblock-File コマンドレットの使用などによってスクリプトのブロックが解除されている場合は、インターネットからダウンロードされた、署名されていないスクリプトが実行されます。
– インターネット以外をソースとする署名されていないスクリプトや、署名されているが悪意のあるスクリプトが実行される危険性があります。

Unrestricted
– 署名されていないスクリプトを実行できます (悪意のあるスクリプトが実行される危険性があります)。
– インターネットからダウンロードされたスクリプトや構成ファイルを実行する前に、ユーザーに警告します。

Bypass
– 何もブロックされません。警告やプロンプトは表示されません。
– この実行ポリシーは、Windows PowerShell のスクリプトが大きいアプリケーションに組み込まれている構成や、Windows PowerShell が独自のセキュリティ モデルを持つプログラムの基盤になっている構成を対象としています。

Undefined
– 現在のスコープに実行ポリシーが設定されていません。
– すべてのスコープの実行ポリシーが Undefined の場合、有効な実行ポリシーは、既定の実行ポリシーである Restricted になります。
注記:インターネット パスと汎用名前付け規則 (UNC) パスを区別しないシステムの場合、RemoteSigned 実行ポリシーを使用すると、UNC パスで識別されているスクリプトが実行を許可されない可能性があります。

端末で作成したWindows Powershellのスクリプトを実行するだけですので、今回はポリシーを”RemoteSigned”に変更します。
※ 今回は自分で管理しているパソコンであるため変更しています。もし、今お使いのパソコンが会社の所有物であればシステム管理者や組織の上長にポリシーの変更が可能であるか確認する必要があります。
下記のようにコマンドを実行します。

PS C:\workspace> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
実行ポリシーの変更を実行するとポリシーが変更された場合の危険性についての警告がポップアップメッセージとして表示されます。今回は意図的に設定しているため、”はい”ボタンを押下してポリシーを変更します。
[管理者として実行]しなかった場合、下記のようなエラーとなります。
Set-ExecutionPolicy : レジストリ キー ‘HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell’
へのアクセスが拒否されました。 既定 (LocalMachine) のスコープの実行ポリシーを変更するには、[管理者として実行] オプションを使用して Windows PowerShell を起動してください。現在のユーザー
の実行ポリシーを変更するには、”Set-ExecutionPolicy -Scope CurrentUser” を実行してください。
発生場所 行:1 文字:1
+ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (:) [Set-ExecutionPolicy], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetExecutionPolic
yCommand

設定されているポリシーを確認します。
PS C:\workspace> Get-ExecutionPolicy
Restricted

これでWindows Powershellのスクリプトを実行することが可能になりました。

 

フォルダ内のファイルのリストが欲しい 2017/01/14 No Comments

Windows Serverのフォルダ内のファイルのリストが欲しい。

もちろん、サブフォルダの中も。

そして、フォルダのパスとファイルの更新日時、サイズの情報も。

Treeコマンドだと、ファイル名しか取得できなので、Dirコマンドで何とかしたいのだが・・・。

> tree /F c:\test

色々、試してみて下記のコマンドだと、一応欲しい情報がすべて取得できるのだが、結果の出力がいまいち。

> dir c:\test /b /a-d /s

仕方がないので最終的に下記のコマンドの実行結果をCSV形式のファイルに編集するスクリプトを作成しました。

> dir c:\test /a-d /s /oen

せっかくなので勉強がてらWindows PowerShellに挑戦しました。
できたのがこちら。
Read the rest of this entry »

 

謹賀新年 2017/01/01 No Comments

明けましておめでとうございます。

本年もお客様のシステムの導入、コンピュータの困ったの解決をお手伝いできるように精進いたします。

また、新しいシステムの導入にあたり、見積もりやシステムの開発規模が妥当か第三者の立場として妥当性を判断し、助言をさせていただく「システム・センカンドオピニオン」サービスを行いたいと考えております。

本年もよろしくお願いします。