2014-01-01から1年間の記事一覧

初期状態のPowerShellでスクリプトファイルを実行する

UWSC公式掲示板で教えてもらったのでメモ。 powershell -EncodedCommand ([Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes((gc (ファイルパス)) -join "`r`n"))) これ関数化したらRestrictedかたなし。

PowerShellで1949年以降の休日を取得する

たしか先月で、GoogleのカレンダーAPI、v1/v2が使えなくなりました。 ということでGoogle依存を解消したPowerShellでの休日取得を考えてみました。 追記 2021/10/12 2021年東京オリンピック周りの変更を反映 2007以降のみを削除 関数名等修正

UWSCで可変引数を扱う(修正版)

以前、このような記事を書いた。 UWSCで可変引数を扱う - じゅんじゅんのきまぐれ しかし、、、欠陥があることに今頃気づいた。 ScriptControlのRunメソッドに16個以上のパラメーターを渡すとエラーになるのです、、、。 やはり最大は固定しかない、というの…

PowerShellでAssemblyのLoad/Unloadを簡単に

Add-TypeでAssemblyをロードしちゃうと、Unloadできないじゃないですか。 あの仕様って、どんな嫌がらせなんですかね? じゃあってんで、PowerShellプロセスを使い捨てにするのが一般的だと思うけど、そうすると一部は残したい、という場合にまたAdd-Typeし…

Powershellのタブ補完の秘密

本当はタブ補完を自由にコントロールしたかったのだけど、ちょっと面倒になったのでヒントだけ。 Powershellのタブ補完は、TabExpansionという関数が担っているらしい。 その正体は、 (Get-Command TabExpansion).Definition 手元のPowershell v2.0環境では…

Powershellスクリプトの署名と証明書の操作

Powershell、とっても便利じゃないですか。 便利、それは危険ということ。 セキュリティホールつかれてスクリプトが実行されたら大変ですよね! 利便性のためにすぐRemoteSignedにしがちですが、せめてAllSignedにしましょう。 ということで、方法を考えてみ…

Powershellで非同期にファイル変更を監視する

なんかさ、便利なものを公開してくれる人もいるわけじゃないですか。 でもさ、ファイル修正してからコマンド叩くの、面倒じゃないですか。 忘れるじゃないですか。 勝手に作れよ、と。 だから考えてみた。 追記 2014/12/15 Start-Watcherのリターンを、Watch…

Powershellで非同期実行

Start-Jobで非同期実行っぽいことができるわけですが、あれは別プロセス。 しかも、Receive-Jobしないと結果取得できない。 スレッドでやりたいじゃない? そこを解決してみる。 追記 2014/12/03 Start-Timerのスクリプトブロックに引数を渡せるようにした …

Powershellで雪でも降らせる

冬だし、Powershellで雪でも降らせるか、とスクリプトを書いてみた。 実行すると、私がぽちぽちドットを押して描いた雪の結晶が一つ、適当な位置から落ちていきます。 一番下まで落ちたら終了。

UWSCでタスクトレイ常駐する

公式掲示板にUWSCでタスクトレイ常駐する方法はないか、という質問があった。 需要があるようなので、考えてみた。 TEXTBLOCKの部分はPowershellなので、PowershellでNotifyIconを作成するサンプルでもあります。 追記 2014/11/21 高機能版に、親プロセス(=U…

UWSCのスレッド間で同じScriptControlを使う、とPUBLICでない文字列をスレッド間で共有する(相互更新可能)

UWSCでオブジェクトというと、ScriptControl経由でのJScriptオブジェクトが使いやすい。 しかし、こやつはスレッドを超えられない。 これをどうにかしたい。 結果:ieに依存してよければ超えられる なお、PUBLICでない文字列をスレッド間で共有するだけなら…

Powershellでファイルを分割する

Powershellでバイナリーファイルを分割したくなった。 検索すると、ReadAllBytesで読込んでしまうのが出てきたので、少し修正した。 ついでに、テキストの行数分割もつけたけど、、、遅いし、UTF-16で出力されることに注意。 属性と最終更新日付も保持するよ…

ShellのCopyHereを使わずに素の.netでZIPファイルを扱う

.net 3.0のプライベートクラスを利用したZIP圧縮・展開の記事を書いた。 素の.net 3.0以降でZIPファイルを扱う - じゅんじゅんのきまぐれ しかし、更新日付問題があった。 これを解決してみた。 多分、、、.net 2.0以降で動くんじゃなかろうか。 原理 追記 2…

素の.net 3.0以降でZIPファイルを扱う

.net 4.5からZipArchiveクラスが提供されます。 これによりようやくZIPファイルの扱いがまともになるわけですが、、、。 Windows7/8では、素では.net4.5は入っていません。 これをなんとかしたい。

UWSCのヘルプを開くモジュール

以前、.chmファイルを解析してみた。 UWSCで.chmファイルを解析する - じゅんじゅんのきまぐれ 手元にあるUWSCインタープリターは、解析したキーワードを登録しておいて、hh.exeでヘルプを開くものでした。 が、これだと、キーワードを更新しないといけない…

UWSCでINIのセクション・キーの一覧を取得する

UWSCのREADINI関数には、セクションやキーの一覧を取得する方法がない。 GetPrivateProfileStringでは、セクションやキーの一覧を取得する方法がある。 キー数可変で動作したい時、この一覧が便利なんですよね。 ということで、モジュールを書いてみた。

言語のエスケープ文字と正規表現のリテラル表現(エスケープ文字)について

UWSC公式掲示板に以下のような質問があった。 正規表現置換をしたかったのですが上手く動きません。 csvを読み込んでtsvに変換するため、 正規表現の置換結果に\tを使いたいのですが、 "\t"がそのまま書かれてしまいます。 いまはReplace文で通常置換してま…

ZipPackageクラスを使ってOfficeファイルを編集する

UWSC公式掲示板に、ワードファイルの新規自動作成についての質問があった。 方法を考えたものの、簡単には実証コードが書けなくて断念したのだが、、、くやしいので再挑戦した。 全てPowershellを使って書いても良かったけど、UWSCでの質問なので、編集周り…

Powershellとautorunsで自動起動をチェックする

Microsoftが無料で提供しているSysinternalsツールのAutorunsを使って、Powershellで自動実行の確認をする。 私はPowershellをランチャーとして使っているので、起動時に組み込んでみた。

WSH:JavaScriptでADODB.Streamなしにバイナリー出力する

気が向いたので、ADODB.Streamが使用できない環境で、バイナリー出力する方法を考えてみた。 以下の制約がのめるなら、なんとかなる。 先頭2Byteは、ASCII範囲内(0〜128) 全体は偶数バイトであること、もしくは、奇数バイトの場合偶数位置にASCII範囲内があ…

UWSCバッドノウハウクイズ

UWSC公式掲示板でクイズを出してみた。 Q1) 「おみごと」と出る最小の入力は? HASHTBL h h[0] = 1 WHILE LENGTH(h) EVAL(INPUT("?")) WEND h[0] = 1 MSGBOX("おみごと") 標準:16 or 17文字 むむ:9文字 えっ:7文字(私の回答) 神か:6文字以下 とある行がな…

UWSCとjavascriptの休日判定の修正

「山の日」の制定をうけて、修正しました。 UWSCで祝日を算出する - じゅんじゅんのきまぐれ UWSCで1949年以降の祝日を算出する - じゅんじゅんのきまぐれ javascriptで休日判定 - じゅんじゅんのきまぐれ

UWSC ver5.0.0 の VAR_ASTR/VAR_USTR

UWSC Ver5.0.0からVAR_BSTRが廃止となり、VAR_ASTRとVAR_USTRができた。 そして、ENCODEにCODE_ANSIが追加となった。 この関係を探った結果。 基本は、VAR_USTR ENCODE CODE_ANSIで、VAR_ASTRになる(VARTYPEでも変換化) VAR_ASTRをVAR_USTRに戻すには、EMP…

UWSC v5.0.0 FOR-IN構文について

FOR-IN構文、便利ですよね! シンタックスシュガーだと思うけど、馬鹿にはならないのです。 C#使ってると、シンタックスシュガーって意外と大事、と思います。 ということで、FOR-INで遊んでみた。 二重ループとか、GetOleItemとぶつかったりするんじゃない…

UWSC UAC環境下で昇格ダイアログ起動と降格起動

UWSC公式掲示板に、管理者権限で起動したUWSCを一時的に降格する方法はないか、という質問があった。 CreateProcessWithTokenWでやれば良いとのことだったので、面白そうだからやってみた。

UWSC 4.9c->5.0 ヘルプ変更一覧

さすがメジャーバージョンアップ。 破壊的変更がいくつかあります。 VAR_BSTR廃止とか、ダイアログのクラス名変更とか。 ま、直せば良いだけのこと。 ヘルプの変更一覧(細かいのは適当に省略)は以下で。

PowershellでファイルをBase64エンコード/デコードする

$pathにファイルパスがあるとして [Convert]::ToBase64String([System.IO.File]::ReadAllBytes($path)) $b64strにBase64文字列があり$pathに出力するとして [System.IO.File]::WriteAllBytes($path, [Convert]::FromBase64String($b64str)) ConvertのSystem…

素数を求める

たまたまとあるところで見つけた素数出力のJavaプログラム。 public class prime { public static void main(String[] args) { int p[] = new int[200]; int cnt = 0; p[cnt++] = 2; System.out.println(p[0]); for(int i = 3; i <= 1000; i += 2){ boolean …

コンソール関係のAPIを叩くDLLを適当に作ってみる

AllocConsoleして、位置や色を変更して出力、FreeConsoleができるDLLを作ってみた。 これが遅い場合は、、、API呼び出しのオーバーヘッドを抑えるために、メモリー更新をトリガーに動作させた方が良いかも。

Powershellで覚えるべきたった一つのこと

「help」 ただし、読む根気が必要。ぐぐるのとどちらが早いかは慣れ次第。 以上、、、だと不親切なので、少し解説。