PowerShell

PowerShell

PowerShellのScriptファイル(*.ps1)をダブルクリックで実行できるようにするショートカットの作成手順

PowerShellのScriptファイル(*.ps1)をダブルクリックで実行できるようにするショートカットの作成手順を備忘録として残します。解決内容以下の問題点を解決します。問題点PowerShellのScriptファイル(*.ps1)を実行するには、コマンドラインを開いて以下のようなコマンドを実行します。このままだとスキルの低い人にPowerShell Scriptを配布した後、実行方法を説明するのが少々面倒です。(サラリーマン社会は技術以外にも部課長、お客様など技術者層以外にもファイルを配布することがよくあるのです)解決結果そのため以下のようにショートカットファイルをダブルクリックするだけでPowerShellファイルを実行してくれるようにします。手順以下の手順を実施します。まずPowerShellのScriptファイルを用意します。記述内容は仮に「PowerShellファイルを実行しました」のメッセージを表示するスクリプトにしています。exec.ps1(PowerShellファイル)Write-Host "PowerShellファイルを実行しました"pause次にショートカット...
PowerShell

PowerShellでJSONファイルを読み込むサンプルコード(レコードのようなJSONファイル編)

PowerShellで同じ定義が続くレコードのようなJSONファイルを読み込むサンプルコードを紹介します。ファイル構成jsonファイルとpowershellファイル(ps1)は同じディレクトリに格納しています。ソースコードコマンドを叩くと、JSONファイルを読み込んで全部出力します。今回は2パターンのforeach文でidとnameを出力します。コマンドpowershell -ExecutionPolicy RemoteSigned -File "ReadJson_multi.ps1"ReadJson_multi.ps1# JSONファイルの読み込み$jsonContent = Get-Content -Path "json_multi.json" -Raw$jsonObj = ConvertFrom-Json $jsonContent# 繰り返し処理 1 $jsonObj | ForEach-Object { Write-Host $_.id }# 繰り返し処理 2foreach($person in $jsonObj){ Write-Host $person.name}json_m...
PowerShell

PowerShellでJSONファイルを読み込むサンプルコード(設定ファイルのようなJSONファイル編)

PowerShellでJSONファイルの設定ファイルを読み込むサンプルコードを紹介します。同じ列定義が続くレコードのようなJSONファイルの読み込みは別記事で紹介します。ファイル構成jsonファイルとpowershellファイル(ps1)は同じディレクトリに格納しています。ソースコードコマンドを叩くと、JSONファイルのいくつかのプロパティを読み込みます。コマンドpowershell -ExecutionPolicy RemoteSigned -File "ReadJson.ps1"ReadJson.ps1# JSONファイルの読み込み$jsonContent = Get-Content -Path "json1.json" -Raw$jsonObj = ConvertFrom-Json $jsonContent# プロパティの確認# 文字列Write-Host $jsonObj.property1# 数値Write-Host $jsonObj.property2# 階層構造Write-Host $jsonObj.property3.namejson1.json(JSONファイル){ ...
PowerShell

PowerShellでJSONファイルへ書き込むサンプルコード

PowerShellでJSONファイルへ書き込むサンプルコードを紹介します。ファイル構成jsonファイルとpowershellファイル(ps1)は同じディレクトリに格納しています。ソースコードコマンドを叩くと、JSONファイルを読み込み、ageプロパティとpets.typeプロパティを変更し書き込みます。また、プロパティ"language" : "japanese"を新規に追加します。コマンドpowershell -ExecutionPolicy RemoteSigned -File "WriteJson.ps1"WriteJson.ps1# JSONファイルの読み込み$jsonContent = Get-Content -Path "json1.json" -Raw$jsonObj = ConvertFrom-Json $jsonContent# プロパティの変更# 年齢$jsonObj.age = 99# ペットの種類$jsonObj.pets.type = "bird"# プロパティの追加# 母語$jsonObj | Add-Member -Name "language" -Va...
PowerShell

PowerShellによるswap関数(2つの変数の値を交換)のサンプルコード

PowerShellによるswap関数(2つの変数の値を交換)のサンプルコードを紹介します。SWAP関数とはSWAP関数とは「二つの変数の値を入れ替える」基本的な関数です。ソートアルゴリズムを学ぶ際に、SWAP関数は必ず必要な知識になります。ここではPowerShellで、2ステップに分けてSWAP関数を作成していきます。二つの変数の値を入れ替えるコードを作成する上記のコードをSWAP関数化する二つの変数の値の入れ替えまずはシンプルに2つの変数の値を入れ替えます。関数化は後で実施します。ソースコードコマンドpowershell -ExecutionPolicy RemoteSigned -File "swap.ps1"swap.ps1$data1 = "あいうえお"$data2 = "かきくけこ"Write-Host ("入れ替え前:" + $data1 + "," + $data2)# 値の入れ替え$temp = $data1$data1 = $data2$data2= $tempWrite-Host ("入れ替え後:" + $data1 + "," + $data2)Read-Ho...
PowerShell

Excelの各セルのフォント名(フォントファミリー)を変更するPowerShellのサンプルコード

Excelの各セルのフォント名(フォントファミリー)を変更するPowerShellのサンプルコードを紹介します。仕様ローカルの任意の場所にPowerShellの*.ps1ファイルと、Excelファイルを格納します。「Book1.xlsx」のA列のセルのフォント名を変更してみます。後でPowerShellの実行前後を比較するため、B列にもA列の内容をコピーしておきます。PowerShell実行前のフォント名は游ゴシックです。これを以下のような別のフォント名に変更させます。セル位置実行前実行後A1游ゴシックMS PゴシックA2游ゴシックMS ゴシックA3游ゴシックMS 明朝A4游ゴシックメイリオA5游ゴシック游ゴシックソースコード以下のコマンドとps1ファイルを準備しておきます。コマンドpowershell -ExecutionPolicy RemoteSigned -File "setExcelFontName.ps1"setExcelFontName.ps1$excel = New-Object -ComObject Excel.Application$book = $null$exc...
PowerShell

Excelのシートの並び順を逆順にするPowerShellのサンプルコード

Excelのシートの並び順を逆順にするPowerShellのサンプルコードを作ってみました。仕様ローカルの任意の場所にps1ファイルと、Excelファイルを格納します。Book1.xlsxを開くと、左から以下の順でシートが用意されています。Sheet1Sheet3Sheet5Sheet2Sheet4Sheet6PowerShellを実行すると、以下のように元の順と逆順に入れ分かるようにします。Sheet6Sheet4Sheet2Sheet5Sheet3Sheet1※あくまで逆順であって、ソートじゃないことに注意ソースコードpowershell本体と、PowerShellを実行するためのコマンドです。コマンドpowershell -ExecutionPolicy RemoteSigned -File "ReserveSheet.ps1"ReserveSheet.ps1$excel = New-Object -ComObject Excel.Application$book = $null$excel.Visible = $false$excel.DisplayAlerts = $fals...
PowerShell

Wordの古い「97-2003文書(.doc)」を新しい「Word文書(.docx)」の形式にまとめて変換するPowerShellのサンプルコード

Wordの古い「97-2003文書(.doc)」を新しい「Word文書(.docx)」の形式にまとめて変換するPowerShellのサンプルコードを紹介してみようと思います。doc形式?と思われるかもしれませんが、まだまだ古い文書を保有している企業は多いと思いますので、使いどころはあると思います。仕様以下のようにwordの古いファイル形式「*.doc」ファイルが同じディレクトリに格納されているとします。これらを「transWordFiles.bat」バッチをダブルクリックするだけで、新しいWordの形式に変換するという仕様です。※もちろん拡張子だけ変えるとかいうこざかしいことはしません。今回の場合はとりあえず例としてWordファイルを5ファイル用意しました。が、たぶん数百ファイルぐらいは大丈夫なんじゃないかと思います。ソースコードバッチ処理はPowerShellを呼び出すだけです。ポリシーの関係で一回バッチから実行していますが、PCの設定を変更して直接PowerShellの処理を実行しても良いかと思います。transWordFiles.batpowershell -ExecutionP...
PowerShell

VBAからPowerShellのコマンドを実行するサンプルコード(戻り値を取得しないパターン)

VBAからPowerShellのコマンドを実行するサンプルコードを2パターン作成してみました。この記事ではそのうちの戻り値が不要で取得しないパターンを紹介します。準備事前準備として、VBAからPowerShellコマンドを実行するには以下の設定が必要です。ツールバーから「参照設定」を選択「Windows Script Host Object Model」のライブラリファイルにチェックを入れます。仕様VBAからPowerShellコマンドを呼び出します。テストで実行するPowerShellのコマンドはなんでもよいのですが、ここでは「Rename-Item」にしてみましょう。マクロファイル(xlsm)と同じディレクトリにファイル「File1.txt」を置き、マクロからPowerShell経由でファイル名を変更してみます。マクロを実行したらファイル名が、「File1.txt」から「File2.txt」になります。見出し念のため補足しますが、実現している処理自体はVBAからPowerShellを経由する必要性はありません。マクロからPowerShellを実行する方法をテストするためにやっていま...
PowerShell

VBAからPowerShellのコマンドを実行するサンプルコード(戻り値を取得するパターン)

VBAからPowerShellのコマンドを実行するサンプルコードを2パターン作成してみました。この記事ではそのうちの戻り値を取得するパターンを紹介します。準備事前準備として、VBAからPowerShellコマンドを実行するには以下の設定が必要です。ツールバーから「参照設定」を選択「Windows Script Host Object Model」のライブラリファイルにチェックを入れます。仕様VBAからPowerShellコマンドを呼び出します。PowerShellのコマンドはなんでもよいのですが、「Get-Date」にして結果をVBAのMsgBox関数で表示してみます。見出し念のため補足しますが、実現している処理自体はVBAからPowerShellを経由する必要性はありません。マクロからPowerShellを実行する方法をテストするためにやっています。ソースコードWScript.ShellのExecメソッドにより、powershellのコマンドを実行しています。execPowerShell.xlsmOption ExplicitFunction execPowerShell(psCmd...