はじめに
PNGファイルをJPEGに変換する方法にはいくつかの方法がありますが、Windowsのデフォルト機能だけで実現したい場合は、PowerShellを使用することができます。本記事では、PowerShellを使用して指定ディレクトリ配下のPNGファイルをJPEGに変換する方法について解説します。
アラフォーSEが自由に自分の業務周りや趣味周りの各種IT系技術情報を発信するブログ。何年も前:OSS色強め→ちょっと前:ServiceNow色強め→今後Powershell、AWS、VBA主になりそう
PNGファイルをJPEGに変換する方法にはいくつかの方法がありますが、Windowsのデフォルト機能だけで実現したい場合は、PowerShellを使用することができます。本記事では、PowerShellを使用して指定ディレクトリ配下のPNGファイルをJPEGに変換する方法について解説します。
ファイルをディレクトリを掘って分類して保存していると、よく起こるのが、ディレクトリ開けてみたら空っぽでムカつく問題。
GUI上で開けてみないとディレクトリがからなのは分からないので地味に怠いですよね。そんな時はPowershellで空っぽのディレクトリを削除してしまいましょう。
イベントログは、Windowsシステム上で発生する様々なイベントを記録する重要な情報源です。前回の記事では、PowerShellのGet-EventLogコマンドレットを使って、イベントログを解析し、異常なアクティビティやセキュリティインシデントの兆候を検出する方法を紹介しました。今回は、さらに時間軸集計に役立ちそうな絞り込みや発生源での抽出方法などを紹介します。
Windowsネットワークのトラブルシューティングに時にPowershellだけでもいろいろな事が実は確認できます。
中でもTest-NetConnectionコマンドレットは使い方を覚えておくと、役立つ場面があるため主要な機能を紹介します。
また実はTest-NetConnectionコマンドレットでICMPも送れる事は、意外と気づいていない人も多いのではないでしょうか。(ping 8.8.8.8等と半ば無意識で手が動く様な世代の人は特に。)
CSVファイルを読み込み、加工し、出力する方法をPowerShellスクリプトを使って解説。
CSVファイルは、データのインポートやエクスポートに頻繁に使用される形式です。PowerShellを使うと、CSVファイルの操作や編集を簡単かつ効率的に行うことができます。この記事では、CSVファイルを読み込み、加工し、出力する方法をPowerShellスクリプトを使って解説します。
イベントログは、Windowsシステム上で発生する様々なイベントを記録する重要な情報源です。PowerShellのGet-EventLogコマンドレットを使って、イベントログを解析し、異常なアクティビティやセキュリティインシデントの兆候を検出する方法を紹介します。
Windows環境で作業効率を向上させるツールとして、PowerShellは非常に優れています。今回は、PowerShellを用いた時短術や便利なスクリプトを紹介します。これらを活用することで、業務効率を最大化しましょう!
Powershellを使用してファイルのメタデータを取得する方法について説明します。Get-ChildItemコマンドレットを使用することで、指定されたフォルダー内のファイルのリストを取得し、ファイル名、作成日時、サイズ、属性などのメタデータを取得することができます。
以下は、ファイルのメタデータを取得するためのサンプルコードです。
この記事では、PowerShellを使ってフォルダ内のファイル名に一括で文字列を置換し、ファイルをリネームする方法を紹介。ただし、日本語のフォルダ名やサブフォルダがある場合には、うまく動作しない可能性があるため、要注意。
またChatgptに作らせてみたシリーズ。
Powershellで指定した拡張子のファイルの複製をリストアップするスクリプト。
$basePath = "C:\tmp\" $fileExtensions = @(".jpg", ".jpeg", ".png", ".bmp", ".gif") # Get all files recursively $targetFiles = Get-ChildItem $basePath -Recurse | Where-Object { $_.Extension -in $fileExtensions } # Group files by content hash $hashGroups = $targetFiles | Group-Object { (Get-FileHash $_.FullName).Hash } # Filter groups that have more than one file with the same hash $duplicateGroups = $hashGroups | Where-Object { $_.Count -gt 1 } # Display information about duplicate files foreach ($group in $duplicateGroups) { Write-Host "Duplicate files with hash $($group.Name):" foreach ($file in $group.Group) { Write-Host " $($file.FullName) (size $($file.Length))" } }
basePath fileExtensions を編集すれば各自の用途に応じて利用可能。
chatgptはハッシュ値で似たfileも検出できる的回答をしていたが、それは仕組み的に違うと思うが、同一ファイルなら使える事を確認済み。
丸っと信じられるレベルではないがやっぱり生産性は高い。
ちゃんと真贋を見極める知見さえあれば使える。
以下動作の解説。
Powershellで指定URLのファイルをダウンロードし、ファイル名に日付を追加して保存するスクリプト
以前こちらの記事で参考にしたソースコードでは一部うまく行かないケース(ps1スクリプトに与える引数が正しく渡せない)があったので動くように改善してみました。
Excel VBAからPowershellスクリプトを引数付きで実行する方法について解説します。関数化して、汎用性を持たせることで、複数のスクリプトを扱う場合やpowershell側の期待する引数の数が幾つの場合であっても簡単に実行できる様にしています。
Excel VBAから引数を渡す.ps1スクリプトを呼び出してExcelマクロで全体の処理をハンドリングするための材料調査。
という事でそこそこ簡単に実現できそうだ。
調べた内容は次の二点。
やりたい事①:VBAからのPS1スクリプト呼び出し。
やりたい事②:PS1スクリプトで引数を受けるお作法
Servicenowのいろんなアプリの記事(インシデントチケットでもナレッジ記事でも)にはおおむね添付ファイルが付けられる。
一般的なファイル形式であればServicenow上で全文検索も可能で便利ではあるがServicenowの外で添付ファイルを扱いたいケースもある。そんな場合は添付ファイルを探してダウンロードという作業を繰り返す必要がある。
API経由でごそっとダウンロードできればそんな面倒が解放されるはずなのでPowershellで試してみる。
.batや.vbsファイルの場合、ダブルクリックすることでスクリプトを簡単に起動することができますが、.ps1ファイルの場合、標準ではダブルクリックで起動することができません。この記事では、PowerShellでのスクリプト起動方法について紹介します。
さて前回に引き続きServicenowにインターネットに口のないURLからデータをダウンロードしてPCで中継してSNOWのテーブルへ更新インポートする様な仕組みを作らねばならなくなった(執筆時点では出来るかどうか不明)、という状況。
前回データ提供元のInternal環境のURLからファイルをダウンロードする事には成功したので、今回はServicenowからマージ(上書き)対象のデータをゲットすることとしたい。
インポート→更新、からダウンロードできるSysid付きのエクセルが落とせればベストなのだが、残念ながら現状方法が見つけられなかった。
が、一応代替手段っぽいことは出来たのでそれで行く。言語はPowerShellで続行。
ひょんなことから限られたリソース・期間でServicenowにインターネットに口のないURLからデータをダウンロードしてPCで中継してSNOWのテーブルへ更新インポートする様な仕組みを作らねばならなくなった(執筆時点では出来るかどうか不明)。
(きっかけはServicenowだが本記事では基本的にWindowsのPowerShellでネットワーク上のファイルをタスクスケジューラを使って定期的に自動取得する仕組みを検討している)
まず今回は元ネタになるファイルのダウンロードの仕組みから検討してみる。
制約条件はWindows10を使用し追加のソフトウェア購入予算無し。
必然的に選択肢は.batか.ps1か.vbsあたりが想定される。
.batでもよいが、将来単なるダウンロードではなく、ログインやら条件分岐やら複雑な事をやろうと思ったときに、スクリプトが困難になる恐れあり、VBSは悪く無いが、経験上今一安定的に動かす用途には難しそう、かつMSさんはvbsを止めたがっている疑惑が個人的に止まらない。
という事でコマンドが直感的に打ちにくくて好きではなくこれまで敬遠してたが、PowerShellでやってみることにする。
今までWindowsでウェブ関連の自動化をしたいときの定番と言えばIE+VBS/VBAでIEオブジェクトを操作するって感じだったが、そろそろEdgeネイティブ対応のシステムが出てきたり、IE捨てろ圧が各所で高まってきてたりしており、場面によってはEdgeでの自動化が必要となる場面が出てきているように思う。
残念ながらメモ帳でVBSを頑張って記述するだけで一応自動化できたIEとは違い、 Webdriver という仕組みを使うのがEdgeの場合の自動化手段となっている様だ。
インターネットが現代社会におけるコミュニケーションの基盤となっている今日、ウェブサイトのURLはビジネスや個人ブランディングにとって重要な役割を果たしています。URLは単にウェブページへの経路を示すだけでなく、SEO(検索エンジン最適化)においても重要な要素です。この記事では、U...