喫茶XRAYトップページ

[▲前のスレッド]

[11531] PowerShellの記事返信 削除
2017/11/6 (月) 22:31:04 Mr.XRAY
以下の記事を追加しました.

[ Delphi で Windows PowerShell を使用する ]
http://mrxray.on.coocan.jp/Delphi/Others/PowerShellDelphi.htm

[11532] Re:PowerShellの記事返信 削除
2017/11/7 (火) 08:08:48 SO
▼ Mr.XRAYさん
> 以下の記事を追加しました.
>
> [ Delphi で Windows PowerShell を使用する ]
> http://mrxray.on.coocan.jp/Delphi/Others/PowerShellDelphi.htm


お、新しい記事だと読んでいたら、簡単なメール送信の紹介がw

--

記事修正を。
01_PowerShell の起動と PowerShell のバージョン確認 にて

C:\Windows\syswow64\WindowsPowerShell\v1.0\powershell.exe  //54bit Windows の 32bit版

54bit。


[11533] Re2:PowerShellの記事返信 削除
2017/11/7 (火) 08:42:45 Mr.XRAY
▼ SOさん

> 記事修正を。

ハハハッ.
ありがとうございます.


[11534] Re2:PowerShellの記事返信 削除
2017/11/7 (火) 08:54:17 Mr.XRAY
▼ SOさん

> お、新しい記事だと読んでいたら、簡単なメール送信の紹介がw

すみませんね.
使えるものは何でも利用させて頂く主義なもんで m(_ _)m


[11536] Re:PowerShellの記事返信 削除
2017/11/7 (火) 22:15:28 Mr.XRAY
> [ Delphi で Windows PowerShell を使用する ]
> http://mrxray.on.coocan.jp/Delphi/Others/PowerShellDelphi.htm


以下を追加しました.
値が取得できれば後は Delphi 側でどうにもなると思って記事にはしなかったのですが,
考え直して結局追加しました.
そもそも PowerShell のことを記事にするつもりはあまりありませんでした.
どういう内容の記事に,どういうサンプルにするかアイデアが出てきませんでした.

ネットで検索したら Delphi に関係した PowerShell の記事がほとんどないので,
書いてみるか... という感じで作成しました.

[13_コマンド実行結果の数値の書式設定]
http://mrxray.on.coocan.jp/Delphi/Others/PowerShellDelphi.htm#13

[14_コマンド実行結果の日付時刻の書式設定]
http://mrxray.on.coocan.jp/Delphi/Others/PowerShellDelphi.htm#14


[11537] Re2:PowerShellの記事返信 削除
2017/11/7 (火) 22:35:31 Mr.XRAY
> そもそも PowerShell のことを記事にするつもりはあまりありませんでした.

実際問題として,スクリプトのコードさえあれば,
ShellExecute 関数で Cmd.exeを使用するのとほとんど変わりません.
セキュリティ関係のオプションは必要ですが,

こんなのもありますし... (^^;

↓ PowerShell のスクリプトのコードが掲載されています.
https://community.embarcadero.com/blogs/entry/year-convert-between-gregorian-and-japanese-new-era

[11547] Re:PowerShellの記事の更新返信 削除
2017/11/12 (日) 16:58:45 Mr.XRAY
[ 09_PowerShell コマンドの実行結果をリダイレクト ]
http://mrxray.on.coocan.jp/Delphi/Others/PowerShellDelphi.htm#09

以降を更新しました.
サンプルをダウンロードすれば,コマンドの入力だけ,
あるいはスクリプトファイルを作成すればすぐテストできるようにしました.


[11550] Re2:PowerShellの記事の更新返信 削除
2017/11/14 (火) 12:11:42 Mr.XRAY
> [ 09_PowerShell コマンドの実行結果をリダイレクト ]
> http://mrxray.on.coocan.jp/Delphi/Others/PowerShellDelphi.htm#09


巷にあるスクリプトのコードを TMemo に貼り付けて実行可能なサンプル追加しました.
ボタンの下の TEdit のファイルに保存してから実行するので,
引数付きのスクリプトも実行可能です.


[11553] Re3:PowerShellの記事の更新返信 削除
2017/11/14 (火) 18:00:47 Mr.XRAY
> 巷にあるスクリプトのコードを TMemo に貼り付けて実行可能なサンプル追加しました.

自動貼付けにしていたのですが,
非常に使いづらいので,自動貼付けは止めました (苦笑)


[11562] スクリプトのテスト用プログラム返信 削除
2017/11/17 (金) 14:58:16 Mr.XRAY
あまりにも情けない仕様なので,少しばかり手直ししました.

[15_PowerShell スクリプトのテスト用プログラム]
http://mrxray.on.coocan.jp/Delphi/Others/PowerShellDelphi.htm#15


[11566] Re:スクリプトのテスト用プログラム返信 削除
2017/11/18 (土) 15:02:34 Nov
▼ Mr.XRAYさん
> [15_PowerShell スクリプトのテスト用プログラム]
> http://mrxray.on.coocan.jp/Delphi/Others/PowerShellDelphi.htm#15


そういえば、バッチファイルで実行する方法もいろいろあるようです。
(セキュリティ上よろしくないとは思いますが...)

最近、.netバージョンを簡単に調べる方法を探していて、
[インストールされている全ての .NET Framework のバージョンを列挙する]
https://qiita.com/asterisk9101/items/f13da78b4cb9ab6d3c4b
[バッチファイルにPowerShellスクリプトを埋め込む]
https://pf-j.sakura.ne.jp/program/tips/ps1bat.htm
を参考に(99.99%コピペ)以下のようにしてしてみました。
MSさんが、もちょっと便利な方法を用意していてくれれば、
こんなグレーゾーンを渡らなくても済むのですが。

@(echo '> NUL
echo off)
setlocal enableextensions
set "THIS_PATH=%~f0"
set "PARAM_1=%~1"
PowerShell.exe -Command "iex -Command ((gc \"%THIS_PATH:`=``%\") -join \"`n\")"
exit /b %errorlevel%
-- この1つ上の行までバッチファイル
') | sv -Name TempVar

# ここからPowerShellスクリプト
ls -r "HKLM:\software\microsoft\net framework setup\ndp" | % {
    $_.GetValue("Version") | ? { $_ } | % {
        New-Object PSObject |
            Add-Member NoteProperty -PassThru -Name "Type" -Value "Version" |
            Add-Member NoteProperty -PassThru -Name "Value" -Value $_
    }
    $_.GetValue("Release") | ? { $_ } | % {
        switch ($_) {
            "378389" { $r = "4.5" }
            "378675" { $r = "4.5.1 installed with Windows 8.1 or Windows Server 2012 R2" }
            "378758" { $r = "4.5.1 installed on Windows 8, Windows 7 SP1, or Windows Vista SP2" }
            "379893" { $r = "4.5.2" }
            "393295" { $r = "4.6 installed on Windows 10" }
            "393297" { $r = "4.6" }
            "394254" { $r = "4.6.1 installed on Windows 10 Novermber Update" }
            "394271" { $r = "4.6.1" }
            "394802" { $r = "4.6.2 installed on Windows 10 Anniversary Update" }
            "394806" { $r = "4.6.2" }
            "460798" { $r = "4.7 installed on Windows 10 Creators Update" }
            "460805" { $r = "4.7"}
            default { $r = "Unknown: $_" }
        }
        New-Object PSObject |
            Add-Member NoteProperty -PassThru -Name "Type" -Value "Release" |
            Add-Member NoteProperty -PassThru -Name "Value" -Value $r
    }
} | Sort -Unique -Property Value
Read-Host "続けるには Enter キーを押してください"

[11567] Re2:スクリプトのテスト用プログラム返信 削除
2017/11/18 (土) 17:55:49 Mr.XRAY
▼ Novさん

> そういえば、バッチファイルで実行する方法もいろいろあるようです。
> (セキュリティ上よろしくないとは思いますが...)


記事を書くときにいろいろなサイトの記事を見ましたが,
皆さん本当にいろいろやっていますね.
スゴイです.

> MSさんが、もちょっと便利な方法を用意していてくれれば、
> こんなグレーゾーンを渡らなくても済むのですが。


ハハハッ.No コメント (笑)

PowerShell のスクリプトの部分だけやってみました.


[11568] インストール済み.NET Framework返信 削除
2017/11/18 (土) 18:24:37 Mr.XRAY
インストール済みの .NET Framework のバージョンは
WMI の Win32_Product クラスでも取得できますが,非常に時間がかかります.

実用的かどうかは,貴方次第っと (^^;


[11569] Re:インストール済み.NET Framework返信 削除
2017/11/19 (日) 00:00:53 Mr.XRAY
> インストール済みの .NET Framework のバージョンは

ものはついでですので,Windows API を使用したコードです.
JEDI の Windows API のユニットを使用しています.

うまくいったと思ったら,検出できないバージョンがあります.
WMI を使用したのも,このサンプルも MSI でインストールしたアプリです.
そのあたりが誓うのかも...
WMI とこのサンプルの動作確認は Windows 7 U64(SP1) + Delphi XE(UP1) Pro です.


implementation

uses
  JwaMsi,
  StrUtils;

{$R *.dfm}

//-----------------------------------------------------------------------------
//  MSIでインストールしたアプリのプロパティの取得
//  AProduct  : インストールしたアプリのプロダクト名(GUID)
//  AProperty : 取得したいプロパティの識別子
//              識別子の名前はMSDNのMsiGetProductInfo関数の説明を参照
//-----------------------------------------------------------------------------
function GetMsiPropertyValueStr(AProduct: PChar; AProperty: PChar): string;
var
  LValue : PChar;
  LLen   : DWORD;
begin
  //取得に必要なバッファサイズを取得(第3引数をnilにする)
  LLen := 0;
  MsiGetProductInfo(AProduct, AProperty, nil, @LLen);

  //取得したバッファサイズにnul終端文字分が含まれないとのことなで追加
  LLen   := LLen + 1;
  LValue := StrAlloc(LLen);
  try
    MsiGetProductInfo(AProduct, AProperty, LValue, @LLen);
    Result := LValue;
  finally
    StrDispose(LValue);
  end;
end;

//=============================================================================
//  MSIでインストールしたアプリをリスト
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
var
  LIndex   : Integer;
  LProduct : PChar;
  LText    : string;
begin
  Memo1.Lines.Clear;
  Memo1.Lines.BeginUpdate;
 
  LIndex := 0;
  LProduct := StrAlloc(MAX_PATH);
  try
    while MsiEnumProducts(LIndex, LProduct) = ERROR_SUCCESS do begin
      LText := GetMsiPropertyValueStr(LProduct, INSTALLPROPERTY_PRODUCTNAME);

      if StrUtils.ContainsText(LText, 'NET Framework') then begin
        Memo1.Lines.Add(string(LProduct));
        Memo1.Lines.Add(IntToStr(LIndex) + '    '+ LText);

        LText := GetMsiPropertyValueStr(LProduct, INSTALLPROPERTY_VERSIONSTRING);
        Memo1.Lines.Add(IntToStr(LIndex) + '    '+ LText);
        Memo1.Lines.Add('');
      end;

      inc(LIndex);
    end;
  finally
    StrDispose(LProduct);
  end;

  Memo1.Lines.EndUpdate;
end;



[11570] Re2:インストール済み.NET Framework返信 削除
2017/11/19 (日) 13:48:01 Nov
▼ Mr.XRAYさん
> うまくいったと思ったら,検出できないバージョンがあります.

OSプレインストールバージョンは列挙できない気がします。
だとしたら、OSバージョンさえ押さえておけば、この方法で充分ですね。

[11578] Re3:インストール済み.NET Framework返信 削除
2017/11/20 (月) 21:42:34 Mr.XRAY
▼ Novさん

> OSプレインストールバージョンは列挙できない気がします。
> だとしたら、OSバージョンさえ押さえておけば、この方法で充分ですね。


結局 Nov さんが掲載したように,レジストリから情報を取得しないと
ダメなようですね.
ということで記事を追加しておきました.

[ インストールされている .NET Framework のバージョン]
http://mrxray.on.coocan.jp/Delphi/Others/dotNETFrameworkDelphi.htm#03


[11579] Re4:インストール済み.NET Framework返信 削除
2017/11/21 (火) 18:33:20 Mr.XRAY
> [ インストールされている .NET Framework のバージョン]
> http://mrxray.on.coocan.jp/Delphi/Others/dotNETFrameworkDelphi.htm#03


あまり気が乗らなかったのですが,気になるので Delphi のコード追加しました.


[11581] Re5:インストール済み.NET Framework返信 削除
2017/11/22 (水) 19:56:11 Mr.XRAY
> > [ インストールされている .NET Framework のバージョン]
> > http://mrxray.on.coocan.jp/Delphi/Others/dotNETFrameworkDelphi.htm#03


(1) v1.1 の検出コードを追加
(2) v4.x の SP が取得できないコードだったので修正
(3) バージョン順に表示するよにした
(4) v4.x の依存関係を表示するようにした


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82