C# を PowerShell で実行 : メッセージボックスの応答結果をファイルに書き込む ( バッチファイルで利用可能 )

まずは動作確認の為、VisualStudio でコードを完成させます。
using System;
using System.IO;
using System.Windows.Forms;

namespace MessageBoxConsole
{
	class Program
	{
		static void Main(string[] args)
		{
			// テンポラリフォルダのパスを取得
			string path = Environment.GetEnvironmentVariable("temp");

			// 書き込むファイルのフルパスを編集する
			string writePath = $@"{path}\_check_result";

			// MessageBox を表示する( System.Windows.Forms の参照が必要です )
			// ※ OK か Cancel のボタンが表示されます
			DialogResult check = MessageBox.Show("実行しますか?", "確認", MessageBoxButtons.OKCancel);
			using (StreamWriter sw = new StreamWriter(writePath, false))
			{
				// OK ならば、ファイルに 1 を書き込みます
				if (check == DialogResult.OK)
				{
					sw.Write("1");
				}
				// CANCEL ならば、ファイルに 0 を書き込みます
				else
				{
					sw.Write("0");
				}

				// ファイルを閉じます
				sw.Close();

			}
		}
	}
}

▼ System.Windows.Forms の参照


次に PowerShell のスクリプトを作成して C# のコードを実行させます。その為に、PowerShell でスクリプトの実行を許可する手順 で設定を済ませておきます。

msgbox.ps1
$code = @"
using System;
using System.IO;
using System.Windows.Forms;
public class MyClass {
	public static void Main() {

		// テンポラリフォルダのパスを取得
		string path = Environment.GetEnvironmentVariable("temp");

		// 書き込むファイルのフルパスを編集する
		string writePath = string.Format( @"{0}\_check_result", path );

		// MessageBox を表示する( System.Windows.Forms の参照が必要です )
		// ※ OK か Cancel のボタンが表示されます
		DialogResult check = MessageBox.Show("実行しますか?", "確認", MessageBoxButtons.OKCancel);
		using (StreamWriter sw = new StreamWriter(writePath, false))
		{
			// OK ならば、ファイルに 1 を書き込みます
			if (check == DialogResult.OK)
			{
				sw.Write("1");
			}
			// CANCEL ならば、ファイルに 0 を書き込みます
			else
			{
				sw.Write("0");
			}

			// ファイルを閉じます
			sw.Close();

		}

	}
}
"@

Add-Type -Language CSharp -TypeDefinition $code -ReferencedAssemblies ("System.Windows.Forms")

[MyClass]::Main()


テキストファイルに結果を出力しているので、以下のようなバッチファイルで利用する事ができます
echo off

echo 処理を開始しました

powershell .\msgbox.ps1

FOR /F %%i IN (%temp%\_check_result) DO (
	if "%%i"=="1" goto :ok
	if "%%i"=="0" goto :cancel
)

:ok
echo OK を選択しました
goto :end

:cancel
echo Cancel を選択しました
goto :end


:end