\

仕事を効率よく完了させる方法は、ToDoリストとタイマーを使うこと

会社で働いていると、あまり気がのらず思うように仕事が進まないことがあると思います。

この記事では、仕事を効率よく終わらせる方法について紹介します。

0. この記事のまとめ

仕事を効率よく終わらせる方法は、ToDoリストとタイマーを使うことです。

まず、ToDoリストは、作業を行う前日までにリストアップしておきましょう。作業当日は、作業することだけに集中できるようにするためです。

次にタイマーですが、これは、ついつい無駄な時間を過ごさないようにするために使います。具体的には、1つの作業を完了させる時間を決めてタイマーをセットし、時間内に終わらせるように作業するようにします。

こうすることで、できるだけ無駄な時間をかけずに仕事を終わらせることができます。

1. ToDoリストで作業内容を明確にする

ToDoリストは、言ってみればやることリストですが、以下のような注意事項があります。

  • 作業前日までに確定させておく
  • 各作業ごとに制限時間をメモしておく
  • 作業完了の条件を具体的にしておく

作業前日までに確定させておく理由としては、作業当日に、作業に集中できるようにするためです。当日になって、今日はどこまで仕事を終わらせておけばいいのか考えていると、仕事が進みません。ToDoリストは作業前日に確定しておきましょう。

次に、各作業ごとの制限時間をToDoリストにメモしておきましょう。例えば、「30分で議事録を作成する」などです。作業内容と制限時間を一緒にToDoリストに書いておくのです。

最後に、ToDoリストには、作業完了の条件を具体的に記載しましょう。「プログラミングする」というToDoはダメです。理由は、どこまでプログラミングしたらこのタスクが完了としていいのか不明なためです。「xxxxxx機能を実装する」のように、作業内容と完了条件が具体的になるようにToDoリストを書きましょう。

2. 作業する時は、タイマーを使用して、制限時間内に終わらせる様にする

せっかく作業と完了条件が具体的なToDoリストを作ったとしても、だらだら作業していたら意味がありません。よって、作業する時はタイマーを使って、制限時内に終わらせるようにしましょう。

音が出せる作業環境であれば音を出してもいいですし、音が出せない作業環境であれば、タイムアップ時に画面表示だけで通知させるようにしましょう。

設定時間に対して短い時間で作業が完了した場合は、次回はこれよりも短い時間で終わらせるように努力してみましょう。

逆に、設定時間に対して長く時間がかかってしまった場合、何が原因だったのか探ってみましょう。

3. 仕事というものは、時間をかけようと思えば無限に時間をかけてしまうもの

仕事というものは、時間をかけようと思えば無限にかけてしまうものです。そのため、完了条件と制限時間を明確にして効率よく仕事を終わらせることが重要です。

早く終われば好きなことができますし、何より時間は無限ではありません。

効率よく時間を使いましょう。

コメントシステムを導入しました!コメント頂けると嬉しすぎて、光の速さで返信します(●´ω`●)

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱

Blazor Wasm PWA ウェブアプリにGoogleアドセンス広告を掲載できるか?

Blazor wasm は、C#のウェブアプリ構築フレームワークです。

razorページで画面を構築していきますが、ページ内にJavaScriptを直接記述できないなど、制約がいくつかあります。

この記事では、Blazor WasmウェブアプリにGoogleアドセンス広告を掲載できるか、検証した結果を説明します。

1. 結果:掲載できる

実際にGoogleアドセンスを掲載したBlazor Wasmウェブアプリは以下になります。

※広告箇所を黒塗りしています。

このウェブアプリは、色々なフォントで表示される「2」が、どのフォントなのか当てるクイズアプリです。

Blazor wasm を使用して開発しています。

この画像のようにアンカー広告が表示できることを確認しました。

※広告箇所を黒塗りしています。

2. モバイルだけでなく、PCでも表示できる

PCから広告を表示させてみた結果が以下になります。

※広告箇所を黒塗りしています。

アンカー広告は、表示サイズによって、モバイルだけでなくPCでも表示が可能です。

3. 「広告掲載の自動化」で表示できる

どのように設定したかというと、Googleアドセンス画面の「広告掲載の自動化」から掲載を行いました。

一部、JavaScriptをページ内に設置する必要がありますが、これは、razorページではなく、wwwrootのindex.htmlに記載しています。

こうすることで、Blazor wasm ウェブアプリ内の全ページに広告を掲載することが可能です。

4. 注意事項①:ページ内広告が表示されると、画面構成が崩れる可能性がある

「広告掲載の自動化」設定では、ページ内広告の表示/非表示を選択できます。

Blazor wasmウェブアプリでも、ページ内広告を表示できることを確認しましたが、文字や画像の上に広告が配置されてしまいました。

よって、「ページ内広告」はおすすめできません。

5. 注意事項②:全画面広告が表示されると、画面遷移に失敗する可能性がある

「広告掲載の自動化」設定では、全画面広告の表示/非表示も選択できます。

検証したウェブアプリでは、AWS Cloudfrontで公開していますが、全画面広告の右上の「×」で広告を閉じると、画面遷移に失敗し、「Access Denied」となりました。

これは、Blazor wasm側の問題ではなく、AWS側の可能性もあります。もう少し詳しく検証する必要がありますが、全画面広告を掲載する際には注意が必要です。

6. 最後に

エンジニアにとって、収入源の確保は重要な項目の1つです。生活費の足しになるだけでなく、モチベーションにも繋がります。

広告を掲載する場合は、十分に検証した上でリリースしましょう。

コメントシステムを導入しました!コメント頂けると嬉しすぎて、光の速さで返信します(●´ω`●)

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱

ExcelVBA 値をクリップボードにセットする

通常、Excelを操作している中では、Ctrl+Cでクリップボードに値をセットしていると思います。

この記事では、ExcelVBAを用いて、クリップボードに値をセットする処理をプログラミングしてみたいと思います。

0. この記事のまとめ

クリップボードに値をセットするには、MSForms.DataObjectを使用します。

参照設定にて、Microsoft Forms 2.0 Object Libraryを参照可能にする必要があります。

そのうえで、以下のコードを使用して、クリップボードに値をセットします。

以下のコードでは、https://usefuledge.comという文字列をクリップボードにセットします。

1
2
3
4
5
6
Dim DataObj As New MSForms.DataObject

DataObj.SetText ("https://usefuledge.com")
DataObj.PutInClipboard

Set DataObj = Nothing

1. MSForms.DataObject

MSForms.DataObjectクラスは、System.Windows.Forms名前空間で定義されているクラスです。

https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.dataobject

このクラスの中には、GetAudioStreamなど様々なメソッドがありますが、この中で使用するものは、以下の2つです。

参照設定にて、Microsoft Forms 2.0 Object Libraryを参照可能にする必要があります。

2. 固定文字をクリップボードにセットする

冒頭で説明したものと同じコードですが、https://usefuledge.comという文字列をクリップボードにセットします。

1
2
3
4
5
6
Dim DataObj As New MSForms.DataObject

DataObj.SetText ("https://usefuledge.com")
DataObj.PutInClipboard

Set DataObj = Nothing

3. アクティブワークブックのファイルパスをクリップボードにセットする

以下のコードでは、アクティブワークブックのフォルダパスとファイル名を結合してファイルパスとして、クリップボードにセットします。

1
2
3
4
5
6
7
8
9
10
11
Dim DataObj As New MSForms.DataObject
Dim filepath As Variant
Dim Filename As Variant


filepath = ActiveWorkbook.Path
Filename = ActiveWorkbook.Name
DataObj.SetText (filepath & "\" & Filename)
DataObj.PutInClipboard

Set DataObj = Nothing

コメントシステムを導入しました!コメント頂けると嬉しすぎて、光の速さで返信します(●´ω`●)

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱

ExcelVBAで四角の図形を作成する方法

Excelでは四角や三角などの図形を作成することができます。

通常はマウス操作で作成することが多いと思いますが、この記事では、ExcelVBAで四角の図形を作成する方法を紹介します。

0. この記事のまとめ

アクティブシートに図形の四角を作成するには、ActiveSheet.Shapes.AddShapeメソッドを使用します。

1
ActiveSheet.Shapes.AddShape(msoShapeRectangle, left, top, width, height).Select
引数 意味 データ型
msoShapeRectangle 図形の四角を表します。 MsoAutoShapeType型
left 図形描画の左上のX座標です。 Single型
top 図形描画の左上のY座標です。 Single型
width 図形の幅です Single型
height 図形の高さです Single型

末尾の.Selectは、作成後の図形を選択するというメソッドです。

1. AddShape メソッド

ShapesオブジェクトのAddShapeメソッドを使用して、図形を作成します。

https://docs.microsoft.com/en-us/office/vba/api/Excel.Shapes.AddShape

2. 四角の図形を作成する

図形の左上X座標=30, 図形の左上Y座標=60, 幅=90、高さ=120の四角を作成するには、以下のようになります。

1
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 30, 60, 90, 120).Select

3. セル選択範囲に一致する四角の図形を作成する

セル選択範囲のX座標、Y座標、幅、高さは、Selectionオブジェクトから取得します。

1
2
3
4
5
6
7
8
9
10
11
Dim top As Integer
Dim left As Integer
Dim height As Integer
Dim width As Integer

top = Selection.top
left = Selection.left
height = Selection.height
width = Selection.width

ActiveSheet.Shapes.AddShape(msoShapeRectangle, left, top, width, height).Select

このようにすることで、セル位置と一致するような図形を作成できます。

コメントシステムを導入しました!コメント頂けると嬉しすぎて、光の速さで返信します(●´ω`●)

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱

ExcelVBA 枠線(目盛線)の表示・非表示を変更する方法

Excelの枠線(目盛線)はデフォルトでは表示されていますが、帳票形式で表示させたい場合など。非表示にしたいこともあると思います。

この記事では、ExcelVBAで枠線(目盛線)の表示・非表示を切り替える方法について紹介します。

0. この記事のまとめ

アクティブウィンドウの枠線を表示するには、以下のコードを使用します。

1
ActiveWindow.DisplayGridlines = True

アクティブウィンドウの枠線を非表示するには、以下のコードを使用します。

1
ActiveWindow.DisplayGridlines = False

トグル(表示のときに非表示、非表示のときに表示)するには、以下のコードを使用します。

1
ActiveWindow.DisplayGridlines = Not(ActiveWindow.DisplayGridlines)

1. DisplayGridlines プロパティ

WindowオブジェクトのDisplayGridlinesプロパティで、枠線の表示・非表示を変更することができます。

https://docs.microsoft.com/en-us/office/vba/api/Excel.Window.DisplayGridlines

  • DisplayGridlinesプロパティがTrueの場合、枠線(目盛線)を表示します。

  • DisplayGridlinesプロパティがFalseの場合、枠線(目盛線)を表示しません。

コメントシステムを導入しました!コメント頂けると嬉しすぎて、光の速さで返信します(●´ω`●)

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱

ExcelVBAで「選択範囲内で中央」にする方法

ExcelVBAで「選択範囲内で中央」をコードで書く方法について、紹介します。

0. この記事のまとめ

選択セルの中で「選択範囲内で中央」をやる場合、

1
Selection.HorizontalAlignment = xlCenterAcrossSelection

このように、HorizontalAlignmentプロパティにxlCenterAcrossSelectionをセットすることで実現できます。

「選択範囲内で中央」とは?

「選択範囲内で中央」にすると、セルを結合していなくても、複数セルの間で中央に配置することができます。

  • 「選択範囲内で中央」設定前

  • 「選択範囲内で中央」設定後

HorizontalAlignmentプロパティ

HorizontalAlignmentは、Rangeオブジェクトのプロパティです。

これにxlCenterAcrossSelectionをセットすることで、「選択範囲内で中央」が実現できます。

公式ドキュメントはこちら↓

https://docs.microsoft.com/en-us/office/vba/api/Excel.Range.HorizontalAlignment

選択したセルで中央にするには、以下のコードになります。

1
Selection.HorizontalAlignment = xlCenterAcrossSelection

補足:元に戻す(左寄せ)にするには?

元に戻す(左寄せ)にするには、xlLeftをセットします。

1
Selection.HorizontalAlignment = xlLeft

補足2:1つのセルの中で中央にするには?

1つのセルの中で中央にするには、xlCenterをセットします。

1
Selection.HorizontalAlignment = xlCenter

補足3:セルを結合するには?

RangeオブジェクトのMergeCellsプロパティにTrueをセットします。

1
Selection.MergeCells = True

コメントシステムを導入しました!コメント頂けると嬉しすぎて、光の速さで返信します(●´ω`●)

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱

技術ブログでGoogleアドセンスから収益が振り込まれるためにやったこと

当ブログ(usefuledge.com)では、2020年10月に、Googleアドセンスから初めて収益が振り込まれました!

このブログは2年前くらいに開設しましたので、2年間でやっと現金収入を得ることができました。

この記事では、技術ブログがGoogleアドセンス収益を上げるまでにやったことを記載します。

1. とにかく記事を書く

Googleアドセンスは、ブログ読者が広告を閲覧する、または広告をクリックすることで収益が発生します。そのため、出来る限り多くの人にブログを見てもらう必要があります。

ブログを見てもらうには、とにかく有益な記事を書くことが重要です。有益な記事とは、誰かの役に立つ記事のことです。

当ブログ(usefuledge.com)では、主にC#やVBA、RPA、AWS、COBOL、PLSQLなど、プログラミングやシステム開発に
関する情報を発信しています。その元ネタは、自分が分からなくて調べて解決したことや、本業で実際にあった仕事の内容がベースになっています。
自分が苦労したことは、おそらく誰かも苦労するだろうという考えで、記事を作成しています。

また、本業が元ネタになっている記事は、専業ブロガーには持っていない有益な情報だと考えていますので、微々たるものですが差別化に繋がると思います。

2. Google Search Console の検索キーワードからブログネタを探す

Google Search Console を使うと、検索キーワードや表示順位、クリック数を調べることができます。

情報量はかなり多いので、あぁ自分のブログはこんなキーワードでもヒットしてるのか、と興味深く見ることができます。

これらの検索キーワードは全て人間が調べていることですので、Google Search Console の結果の裏には非常に多くの読者候補に繋がっています。

よって、Google Search Consoleの結果からブログネタを探すのもいいと思います。

3. 個人開発で得られた知見をブログに書く

個人開発とは、仕事ではなく自分の意思でアプリを開発することです。

仕事の場合は、プログラミング言語やフレームワーク、機能要件が決まってしまいますが、個人開発では自分の意思で自由に決めることができます。

自由ですので、好きなものを選ぶことができますが、一方で、全て自分で決めないといけないために苦労することも多くあります。

これらの活動で得られた知見はかなり有益なものが多いので、ブログに書くべき内容だと実感しています。

4. ブログを書いたらTwitterなどSNSに公開する

ブログを公開したらそのままにするのではなく、TwitterなどSNSに公開しましょう。

せっかく有益な情報を公開したのですから、宣伝するべきと思います。

たくさんの人にブログを読んでもらえるよう、正々堂々と宣伝しましょう。

5. 毎日書き続ける必要はない

毎日書き続けることが良しとされている記事を見かけますが、私個人の意見としては、毎日書く必要は無いと考えています。

毎日ブログネタを蓄積してブログを書き続けるのは素晴らしいことですし、かなりの効果があると思います。しかし、それはかなり大変で、続けるのは難しいでしょう。

ブログで1番大事なことは、記事を作成するスピードではなく、長く続けることです。

そのため、毎日ブログを書き続けるのはあまり重要ではありません。

6. 疲れたら休めばいい。ブログは閉鎖せずに置いておく

ブログを書くのに疲れたら、しっかり休みましょう。このとき、ブログの将来性が期待できなくなってブログを閉鎖せず、放置しておきましょう。

放置しておくと、いつの間にか多くの人に検索されて、月間PVが増えていることもあります。

ブログは長い年月をかけて育てていくものだと思いますので、疲れたら休みましょう。

7. 楽しくやる

ブログを楽しく運営するために必要なことって、なんだと思いますか?この答えは人それぞれだと思います。

私が考えている、ブログを楽しくやるために必要な要素は以下です。

  • 収益が上がる
  • PVが上がる
  • SEO1位のキーワードを量産する
  • 読者に感謝のツイートをもらう
  • 個人開発アプリの利用者増につながる

どの要素も重要で欠かせません。これらがあるから、2年間無収入でも頑張って来れたのだと思います。

これからもブログを運営していきます。

コメントシステムを導入しました!コメント頂けると嬉しすぎて、光の速さで返信します(●´ω`●)

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱

【ProBoarderExcel】マウスを使わずにExcelのオートフィルを使う方法

PC作業を効率化する方法の1つとして、マウスを使わずにキーボードだけで操作する、というものがあります。

それなりに効果はありますが、Excelはどうしてもマウスが必要に思えてしまいます。

そこで、Excelをキーボードだけで操作するために、ProBoarderExcelというアドインを開発しました。

この記事では、ProBoarderExcelを使って、マウスを使わずに、オートフィルを行う方法を紹介します。

1. ProBoarderExcelのダウンロード方法

ProBoarderExcelは、私が開発したExcelアドインです。

Githubに公開しており、オープンソース・MITライセンスでご利用頂けます。

以下からダウンロードできます。

https://github.com/harus0313/ProBoarderExcel

2. オートフィルとは?

オートフィルとは、セルの右下をドラッグドロップして、連続データを作成できる機能です。

右下をドラッグドロップして、下に引っ張ると、

このように、連続データを作成できる機能です。

これを使うには、マウスを使わないといけないのですが、できればキーボードだけでやりたい・・・!

これを実現できるのが、ProBoarderExcelアドインです。

3. ProBoarderExcelアドインの「autofill row」機能を使う

GitHubからダウンロードして、Excelアドインに登録したら、[Ctrl + D]を押します。

すると、ProBoarderExcelウィンドウが表示されますので、以下のように「autofill row」と入力します。

すべて入力しなくても自動的に補完されるようになっています。

コマンドを入力してエンターキーを押すと、生成数を聞かれますので、例えば10個のデータとしたい場合は、10を入力します。

そうすると、1~10までの連続データを生成できます。

4. 右方向(列)に連続データを作成する場合は、「autofill col」機能を使う

右方向に連続データを作成することもできます。

例えば、月火水木金・・・のように、曜日の連続データを作成したい場合は、まず、以下のように、「月」と「火」を入力します。

そして、[Ctrl + D]を押してProBoarderExcelウィンドウを開き、「autofill col」を入力してエンターキーを押します。

さきほどと同じく生成数を聞かれます。ここでは10と入力してみます。

このように、10個の連続データが作成できました。

5. ほかにもいろいろ

ProBoarderExcelはほかにも色々な機能があり、これからも開発を続けていきます。

機能追加要望がありましたら、GitHub、Twitter、このブログの問い合わせフォームからご連絡ください。

UsefulEdge - お問い合わせ

コメントシステムを導入しました!コメント頂けると嬉しすぎて、光の速さで返信します(●´ω`●)

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱

c# How to check the listening port in c#

This article describes how to check the listening TCP/IP Port using IPGlobalProperties class and IPEndPoint Class in c#.

ipad-820272_640.jpg

IPGlobalProperties Class

IPEndPoint Class

The following code checks if the port number “8080” specified in the portNo variable is used by the TCP / IP listener.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//using System.Net.NetworkInformation;
//using System.Net;

int portNo = 8080;

IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();
IPEndPoint[] tcpConnInfoArray = ipGlobalProperties.GetActiveTcpListeners();

foreach (IPEndPoint endpoint in tcpConnInfoArray)
{
if (endpoint.Port == portNo)
{
//ポート使用中
}
}

I have defined properties such as address and port number in the IPEndPoint class.

The code below displays the address and port number currently in use.

1
2
3
4
5
6
7
8
9
10
//using System.Net.NetworkInformation;
//using System.Net;

IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();
IPEndPoint[] tcpConnInfoArray = ipGlobalProperties.GetActiveTcpListeners();

foreach (IPEndPoint endpoint in tcpConnInfoArray)
{
Console.WriteLine($"{endpoint.Address}:{endpoint.Port}");
}

- Execution example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
0.0.0.0:21
0.0.0.0:80
0.0.0.0:135
0.0.0.0:445
0.0.0.0:5040
0.0.0.0:49664
0.0.0.0:49665
0.0.0.0:49666
0.0.0.0:49667
0.0.0.0:49668
0.0.0.0:49669
0.0.0.0:49670
127.0.0.1:2323
127.0.0.1:60183
127.0.0.1:60206
127.0.0.1:60207
192.168.2.111:139
:::21
:::80
:::135
:::445
:::49664
:::49665
:::49666
:::49667
:::49668
:::49669
:::49670

If you reference an active UDP listener, use GetActiveUdpListeners ().

1
2
3
4
5
6
7
8
9
10
//using System.Net.NetworkInformation;
//using System.Net;

IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();
IPEndPoint[] tcpConnInfoArray = ipGlobalProperties.GetActiveUdpListeners();

foreach (IPEndPoint endpoint in tcpConnInfoArray)
{
Console.WriteLine($"{endpoint.Address}:{endpoint.Port}");
}

- Execution example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
0.0.0.0:5050
0.0.0.0:5353
0.0.0.0:5353
0.0.0.0:5353
0.0.0.0:5355
127.0.0.1:1900
127.0.0.1:49664
127.0.0.1:63487
127.0.0.1:63488
127.0.0.1:63684
127.0.0.1:63685
127.0.0.1:64536
127.0.0.1:64612
127.0.0.1:64613
127.0.0.1:64850
127.0.0.1:64851
192.168.2.111:137
192.168.2.111:138
192.168.2.111:1900
192.168.2.111:64535
:::5353
:::5353
:::5355
::1:1900
::1:64534
fe80::c567:d05e:b3fa:a62e%4:1900
fe80::c567:d05e:b3fa:a62e%4:64533

コメントシステムを導入しました!コメント頂けると嬉しすぎて、光の速さで返信します(●´ω`●)

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱

How to run PowersShell script in c#

I will show you how to run a PowerShell script in c#.

The execution method in this article is to call Powershell.exe instead of using System.Management.Automation.

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//using System.Diagnostics;

/// <summary>
/// Run PowerShell script.
/// </summary>
/// <param name="ps1FilePath">PowerShell Script File Name(*.ps1)</param>
/// <param name="args">List of Arguments</param>
/// <param name="stdOut">Standard Output </param>
/// <param name="stdErr">Standard Error</param>
/// <param name="exitCode">Exit Code</param>
public static void ExecPSProcess(string ps1FilePath, List<PowerShellArgs> args, out string stdOut, out string stdErr, out int exitCode)
{
stdOut = "";
stdErr = "";
exitCode = 0;

try
{
string cmdStr = "";
cmdStr = $"-File {ps1FilePath} ";
foreach(var item in args)
{
cmdStr = cmdStr + $"-{item.argName} {item.argValue}";
}

System.Diagnostics.Process process = new System.Diagnostics.Process();
ProcessStartInfo processStartInfo = new ProcessStartInfo("powershell.exe", cmdStr);

processStartInfo.CreateNoWindow = true;
processStartInfo.UseShellExecute = false;

processStartInfo.RedirectStandardOutput = true;
processStartInfo.RedirectStandardError = true;

process = System.Diagnostics.Process.Start(processStartInfo);
process.WaitForExit();

stdOut = process.StandardOutput.ReadToEnd();
stdErr = process.StandardError.ReadToEnd();
exitCode = process.ExitCode;

process.Close();

}
catch
{
throw;
}
}

The following code creates the command string that follows PowerShell.exe.

-File option specifies the PowerShell script file path.

Loop through args using foreach to create a command string that specifies the arguments.

1
2
3
4
5
6
string cmdStr = "";
cmdStr = $"-File {ps1FilePath} ";
foreach(var item in args)
{
cmdStr = cmdStr + $"-{item.argName} {item.argValue}";
}

Create a process object and specify the command string.

1
2
System.Diagnostics.Process process = new System.Diagnostics.Process();
ProcessStartInfo processStartInfo = new ProcessStartInfo("powershell.exe", cmdStr);

Specifies to hide the window, etc.

Start the process and get standard output, standard error, and exit code.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
processStartInfo.CreateNoWindow = true;
processStartInfo.UseShellExecute = false;

processStartInfo.RedirectStandardOutput = true;
processStartInfo.RedirectStandardError = true;

process = System.Diagnostics.Process.Start(processStartInfo);
process.WaitForExit();

stdOut = process.StandardOutput.ReadToEnd();
stdErr = process.StandardError.ReadToEnd();
exitCode = process.ExitCode;

process.Close();

PowerShellArgs Class

Use the following class for the argument passed to the PowerShell script.
In the function explained above, considering that multiple specifications are specified, it is passed as a list type.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/// <summary>
/// PowerShell Scirpt Arguments Class
/// </summary>
public class PowerShellArgs
{
/// <summary>
/// Argument Name
/// </summary>
/// <value></value>
public string argName {get; set;}

/// <summary>
/// Argument Value
/// </summary>
/// <value></value>
public string argValue {get; set;}
}

How to run

For example, suppose you run a PowerShell script like this:

1
2
3
Param($OpenFileName)

code $OpenFileName

This scirpt opens the file specified by OpenFileNamearguments with Visual Studio Code.

The code to call the ExecPSProcess function is below.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
string ps1FilePath = @"D:\OpenFileWithCode.ps1";
PowerShellArgs args = new PowerShellArgs();
args.argName = "OpenFileName";
args.argValue = @"D:\docs.md";

List<PowerShellArgs> argsList = new List<PowerShellArgs>();
argsList.Add(args);

string stdout = "";
string stderr = "";
int exitCode = 0;

ExecPSProcess(ps1FilePath, argsList, out stdout, out stderr, out exitCode);

Console.WriteLine(exitCode);
Console.WriteLine(stdout);
Console.WriteLine(stderr);

Specify the PowerShell script file path to execute and define the arguments.

Arguments are stored in a list type PowerShellArgs object.

1
2
3
4
5
6
7
string ps1FilePath = @"D:\OpenFileWithCode.ps1";
PowerShellArgs args = new PowerShellArgs();
args.argName = "OpenFileName";
args.argValue = @"D:\docs.md";

List<PowerShellArgs> argsList = new List<PowerShellArgs>();
argsList.Add(args);

Define a variable to get the standard output, standard error, and exit code.

Finally, call ExecPSProcess.

1
2
3
4
5
6
7
8
9
string stdout = "";
string stderr = "";
int exitCode = 0;

ExecPSProcess(ps1FilePath, argsList, out stdout, out stderr, out exitCode);

Console.WriteLine(exitCode);
Console.WriteLine(stdout);
Console.WriteLine(stderr);

コメントシステムを導入しました!コメント頂けると嬉しすぎて、光の速さで返信します(●´ω`●)

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱