Auto Gaming Setting Tool をアップデートした件 -ver1.1.1
Auto Gaming Setting Toolのバージョンアップを行いました。
バージョンアップ内容
バグの修正
- 常に最前面に表示されてしまうバグを修正しました
既知のバグ
- ありません。
追加予定の機能
- アイディアが浮かばないのでアイディアを募集しています。
Screen Shot
- not 管理者
- 管理者
- 実行結果
Auto Gaming Setting Tool をアップデートした件
Auto Gaming Setting Tool をアップデートしました。
追加した機能は
- タスクバーのサイズ変更
です。
Windows10以降のデフォルト設定は中ですが、このツールを使えば簡単に小~大まで変更できます。
ぜひ使ってみてください。
PowerShellのプロファイルに色々書いた件
PowerShellのプロファイルに色々書いてみました。
プロファイルの編集方法は下記のページを参照してください。
tech.guitarrapc.com
・プロファイルを編集する自作関数
Function edit_profile{ <# .SYNOPSIS PowerShell プロファイルを編集する .DESCRIPTION メリット:VS Codeの実行パスと$profile変数を直接叩く必要がなくなる .EXAMPLE PS C:\Sample> edit_profile() #> Start-Process "C:\Users\[UserName]\AppData\Local\Programs\Microsoft VS Code\Code.exe" $profile }
・管理者権限で実行しなおす自作関数
Function elev_admin($scriptpath){ <# .SYNOPSIS 管理者権限で実行しなおす .PARAMETER $scriptpath スクリプト本体のパス。$PSCommandPath で取得&渡し可能。 #> if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole("Administrators")){ Start-Process powershell.exe "-File `"$scriptpath`"" -Verb RunAs exit } }
・「ファイルを開く」ダイアログを表示する自作関数
Function OpenFile(){ <#.SYNOPSIS ファイルを開く ダイアログを表示する .OUTPUTS 選択したファイルのファイル名+フルパス 選択しなかった場合は文字列"Error" #> $current_directory = Get-Location # アセンブリのロード Add-Type -AssemblyName System.Windows.Forms # ダイアログインスタンス生成 $dialog = New-Object Windows.Forms.OpenFileDialog # タイトル ファイルのフィルタ 初期ディレクトリ $dialog.Title = "ファイルを選択" $dialog.Filter = "すべてのファイル(*.*)|*.*" $dialog.InitialDirectory = "$current_directory" # ダイアログ表示 $result = $dialog.ShowDialog() # [開く]ボタン押下ならファイル名のフルパスを返す if($result -eq "OK"){ Return $dialog.FileName } else { Return "Error" break } }
・XMLを読み込む自作関数(OpenFile関数と併用する前提)
Function Get-XML($filepath){ <# .SYNOPSIS XMLファイルを読み込む #> $XML = [XML](Get-Content $filepath) Write-Host "型の確認" $XML.GetType() Write-Host "" }
・エクセルファイルをPDFに変換する
Function xls_to_pdf($filepath){ <# .SYNOPSIS エクセルファイルをPDF化する .PARAMETER filepath エクセルファイルのフルパス #> try{ $excel = New-Object -ComObject Excel.Application $excel.Visible = $false $excel.DisplayAlerts = $false $wb = $excel.Workbooks.Open($filepath) $pdfpath = (Get-Item $filepath).BaseName $pdfpath += ".pdf" $wb.ExportAsFixedFormat(0, $pdfpath) $wb.Close() $excel.Quit() } finally{ $sheet, $wb, $excel | ForEach-Object { if($_ -ne $null){ [void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($_) } } } }
上記全てをプロファイルに記述すれば、いつでも自作関数として呼び出せます。
個人的にはOpenFile等は利便性も使用頻度も高いので特にオススメです。
VS Codeで作った.ps1スクリプトがPowerShell ISEで開くと文字化けしたり、そもそも実行できない件
今までPowerShellのスクリプトを組む際はPowerShell ISEを使ってコーディングしていましたが普段他の言語でコーディングする際はVS Codeを使っているのでPowerShellもそちらに乗り換えました。
ただ、PowerShell ISEを使って作成したスクリプトは何の問題もなく実行できますが、VS Codeで作成したスクリプトは何故か実行してもコンソールが一瞬で閉じてしまう現象に襲われていました。
色々調べた結果、PowerShell ISEはShift-JISでスクリプトが保存されるのに対し、VS CodeはUTF-8のBOM無しで保存されてしまうのが原因でした。
別に「"」で囲まれた文字列が文字化けするだけなら大きな問題ではないんですが、「"」が文字化けしてしまうと大変なことになります。
こんな感じ↓ (いつぞや解説したAuto Gaming Setterのスクリプト)
########################################################################### # VC Runtime縺ョ繧、繝ウ繧ケ繝医・繝ォ ########################################################################### $TotalProgress = 7 $denominator = "/"+[string]$TotalProgress Write-Host "-----------------------------------------------------------------" Write-Host "Process " -NoNewline ; Write-Host "1" -NoNewline -ForegroundColor Red ; Write-Host "/" -NoNewline ; Write-Host "5" -ForegroundColor Green Write-Host "VC Runtime縺ョ繧、繝ウ繧ケ繝医・繝ォ" -ForegroundColor Green Write-Host "VC Runtime 2005 - 2019縺セ縺ァ縺ョ繧ゅ・繧偵う繝ウ繧ケ繝医・繝ォ縺励∪縺吶・ Write-Host "2005..." Start-Process -Wait -FilePath "$ScriptDir\Data\VC_Runtimes\vcredist2005_x86.exe" /q Start-Process -Wait -FilePath "$ScriptDir\Data\VC_Runtimes\vcredist2005_x64.exe" /q
見てわかる通り、「Write-Host "VC Runtime 2005 - 2019縺セ縺ァ縺ョ繧ゅ・繧偵う繝ウ繧ケ繝医・繝ォ縺励∪縺吶・」が文字化けしてしまっている所為でWrite-Host以下の処理も文字列として扱われてしまっています。
これを解決するためにはVS Code側でShift-JISとして保存するか、BOM有りのUTF-8として保存する必要があります。
VS Code ウィンドウ下部にある「UTF-8」をクリック
「エンコード付きで保存」をクリック
「UTF-8 with BOM」をクリック
以上です。
......そもそもPowerShell本体がShift-JISじゃなくてUTF-8 BOM有り無しに対応してくれればこんなことにはならないんですけどね。