全2件 (2件中 1-2件目)
1
以前書いたものがなんとなく動作が怪しかったのでリファイン。$linesに空文字を2つ追加しているのは無意味ではありません。これを付けておかないとソースの末尾に改行を付加しないと動きません。PsOnBatTmplate.cmd@SET self=%0@SET args=%* &powershell -command "$lines=gc %Self%;$lines[2..($lines.length-1)],'',''" |powershell -windowstyle hidden -executionpolicy bypass -sta -command -& goto:EOF########################################################################################################引数処理#バッチの引数がpowershellの$arguments配列に入る。#二重引用符中の空白を除き、連続空白を1個のセパレータとして引数配列に分割する。#######################################################################################################$argstr =$env:args$arguments =@()$space ="<space>"while( $argstr -match $space ){ $space +="_"}$spacers =@()$regex =[regex]"`"[^`"]+`""#"エディタの文字列色別表示を満足させるための引用符。外してOK$matches =$regex.Matches( $argstr )$matches|%{ $from =$_.value $to =$from -replace " ", $space $spacers +=,@{ from =$from to =$to }}$spacers|%{ if (!$_){return} $argstr =$argstr.replace( $_.from, $_.to )}$argstr -replace " +", " " -split " "|%{ if ( !$_ ){return} $arg =$_ $spacers|%{ $arg =$arg.replace( $_.to, $_.from ) } $arguments +=,$arg}##############################################################################################################以下、powershellスクリプト領域#############################################################################################################<# 動作テスト コメントを外してメッセージボックスが表示されたら正常動作add-type -assembly system.windows.forms[system.windows.forms.messagebox]::show("$Env:Self " + ($arguments -join ","))#>
2019.11.20
コメント(0)
powershellの関数やコマンドレットには命名規則が定められています。英語動詞-なんとかかんとかって形。例えばget-contentとか。 別に従わなくてもいいけど、ルールどおりやっておいたほうが何かとご利益があるのでは? と思い、どんな動詞が使えるのか調べてみました。MS公式いちいちネットで確認しなくてもいいようにpowershell自身に出力させてみます。("Common,Communications,Data,Diagnostic,LifeCycle,Security" -split","|%{(iex "[system.management.automation.Verbs$_]").getMembers()|?{$_.MemberType -eq "Field"}|%{$_.name}}) -join " "このワンライナーで次のリストが得られました。Add Clear Close Copy Enter Exit Find Format Get Hide Lock Move New Open Push Pop Remove Rename Reset Set Search Show Skip Step Join Redo Split Switch Select Undo Unlock Watch Send Receive Connect Disconnect Write Read Backup Checkpoint Compare Compress Convert ConvertFrom ConvertTo Edit Expand Export Group Import Initialize Limit Merge Publish Restore Save Sync Unpublish Update Mount Dismount Out Debug Measure Ping Repair Resolve Test Trace Approve Assert Complete Confirm Deny Disable Enable Install Invoke Register Request Restart Resume Start Stop Submit Suspend Uninstall Unregister Wait Grant Revoke Protect Unprotect Block Unblockこれ以外に汎用動詞 use- があるようです。もっと調べてから書けばよかった。get-verbこれ一発。Verb Group ---- ----- Add Common Clear Common Close Common Copy Common Enter Common Exit Common Find Common Format Common Get Common Hide Common Join Common Lock Common Move Common New Common Open Common Pop Common Push Common Redo Common Remove Common Rename Common Reset Common Search Common Select Common Set Common Show Common Skip Common Split Common Step Common Switch Common Undo Common Unlock Common Watch Common Backup Data Checkpoint Data Compare Data Compress Data Convert Data ConvertFrom Data ConvertTo Data Dismount Data Edit Data Expand Data Export Data Group Data Import Data Initialize Data Limit Data Merge Data Mount Data Out Data Publish Data Restore Data Save Data Sync Data Unpublish Data Update Data Approve Lifecycle Assert Lifecycle Complete Lifecycle Confirm Lifecycle Deny Lifecycle Disable Lifecycle Enable Lifecycle Install Lifecycle Invoke Lifecycle Register Lifecycle Request Lifecycle Restart Lifecycle Resume Lifecycle Start Lifecycle Stop Lifecycle Submit Lifecycle Suspend Lifecycle Uninstall Lifecycle Unregister Lifecycle Wait Lifecycle Debug Diagnostic Measure Diagnostic Ping Diagnostic Repair Diagnostic Resolve Diagnostic Test Diagnostic Trace Diagnostic Connect Communications Disconnect Communications Read Communications Receive Communications Send Communications Write Communications Block Security Grant Security Protect Security Revoke Security Unblock Security Unprotect Security Use Other 2021年12月21日追記powershell 6.0で追加された動詞が2つありました。build と deploy です。参照
2019.11.11
コメント(0)
全2件 (2件中 1-2件目)
1

![]()
