2020年7月3日金曜日

◆管理者として実行する

以前メモしておいたものを実際に使う機会があったのでUPしておく。
かな~り昔にメモしておいたものなので今となってはもっとスマートなやり方があるのかもしれません。

$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = new-object Security.Principal.WindowsPrincipal $identity
if ($principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) -eq $false)
{
     $Args = '-noprofile -nologo -executionpolicy bypass -file "{0}"' -f
     $MyInvocation.MyCommand.Path
     $MyInvocation.MyCommand.Path
     Start-Process -FilePath 'powershell.exe' -ArgumentList $Args -Verb RunAs
     exit
}

#管理者として実行が必要な処理を以下に記述



上記の処理をスクリプトの先頭に記述しておくと自分自身を管理者実行で呼びなおしてくれるというもの。

これを独立させて、実行するスクリプトを引数で与えても良いのかもしれませんね。

2020年6月11日木曜日

◆Powershellのコンソールサイズをコマンドで変更する

画面のプロパティで変更するのは面倒なのでコマンドで変更する

mode 270,50                                                                                

と思ったけど違うなぁ・・・。

これ、基本的にはDOS窓用かな。
バッファサイズもこのサイズで上書きしちゃうので使えな~い。

プロファイルに以下の関数を突っ込んでおくかな。

function mySet-WinSize(
     $width = 270,
     $height = 50){

$windowsize = $host.UI.RawUI.WindowSize
$windowsize.width = $width
$windowsize.height = $height
$host.UI.RawUI.WindowSize = $windowsize

}

ここではバッファサイズはいじっていないので予めここで指定するサイズより大きなバッファサイズをプロパティで指定しておく。

2020年6月5日金曜日

◆URLエンコード

現場もだいぶ離れていたのと、もともとWEB系は苦手なので会社のWEBページをメンテナンスしろとか言われて右往左往している。

判りやすさ優先でHTMLのファイル名に日本語を付けたところ、ローカル環境では問題なかったがサーバー(Linux)に持っていったらリンク文字が化けているようでアクセスできない。

日本語以外のファイル名を付けるには修正量が多すぎるので思案していたところ、
URLエンコードすれば良いのに気が付いた。

いつもよく見ているのだが、まったく意識していないのでなかなか気づけなかった。

変換の仕方は至極簡単で、

Add-Type -AssemblyName System.Web しておいてから、

[System.Web.HttpUtility]::UrlEncode(“ほげほげ”)

そういえばPowerShellの勉強を始めたころ使ったなぁ・・・。

-----

ローカルでうまくいったので安心していたらサーバーにUPしたらエラーになる。

リンクをクリックすると

Not Found

The requested URL /kensaku/html/巨人.html was not found on this server.

てな感じに表示される。

明らかに日本語ファイル名部分が文字化けしているのでエンコードがうまく理解されないのかと調べたが全く分からず。

だいぶ、悩んだ結果、
リンクが「hogehoge.html」
実際のフィルが「hogehoge.HTML」となっているのが原因のようで小文字に統一したところ解決した。

「HTML」という文字列はエンコードに含めていなかったし、上記メッセージでも「.html」は普通に表示されていたので、ずーっと日本語部分だとばかり思っていた。

Not Foundだけのメッセージならもっと早く気付いたかもしれないが、このメッセージは迷わすなぁ・・・。
きっとここのメッセージの文字化けとNot Foundは因果関係がないのだろう。

2020年5月15日金曜日

◆VSCodeでターミナルの文字化けを直す

バージョン:1.45.1
「ファイル」「ユーザー設定」「設定」を開き、「左ペイン」から「テキストエディター」をクリック。
すこし上にスクロールすると「settings.jsonで編集」リンクがあるのでクリックして
以下の設定を追加(ただし、ソースによって直らないケースもまだあるなぁ・・・)
ソースがUTF8の時はBOM付きがよさげ、だが完ぺきというわけでもない。
ソースはSJISが無難か?
"terminal.integrated.shellArgs.windows": [
"-NoExit",
"chcp",
"65001"
        ],



2020年3月25日水曜日

◆実行ポリシー

Restrictedな環境でもps1ファイルを右クリックして「PowerShellで実行」が動くのは最初からでしたっけ?

2020年3月18日水曜日

◆上書きしないCopy

今更ながらCopy-Itemとかでファイルが既にある場合、上書きしないようにするにはどうするんでしたかね・・・。

2020年1月6日月曜日

◆PowerShell Coreをインストールしてみる

[PowerShell Core 入門]の記事を参考に入門してみようと思い、せっかくならとCentOS(on Hypre-V)でインストールしてみたがうまくいかない。

いかんせん、Linuxはド素人なので何が起きているのかもよく判らない。


とりあえず、以下のコマンド(直接ダウンロード)でインストールできた。

sudo yum install https://github.com/PowerShell/PowerShell/releases/download/v6.2.0/powershell-6.2.0-1.rhel.7.x86_64.rpm