VMware Flingsにあったソフトウェアがbroadcomになって移転した先

ESXi for ARM EditionやUSB Network Native Driver for ESXi といった以前VMware Flings http://flings.vmware.com にあったソフトウェアは、2023年10月に https://developer.vmware.com/samples にリダイレクトされるようになった。

このURLは、 https://developer.broadcom.com/samples にリダイレクトされるのだが、2025年4月2日時点では、errorとなっている。

では、以前VMware Flings にあったものがどこにあるのかというと Broadcom communityの「Welcome to the new home for Flings!」にあった

2024年8月に更新されたvSphere GPU Monitoring を最後に更新はないように見えたけど、

よくみてみたら「Nested ESXi Virtual Appliance」は ESXi 8.0 Update 3c VAが出てた

PowerShellを使ってドロップしたフォルダ内にあるファイル一覧をテキストファイルに保存する

指定したフォルダ内にあるファイルリストを作りたい、という相談を受けた

引数で渡す処理にしてもよかったんだが、簡単に使えるようにするには、ドラック&ドロップ処理でリストが取れるようにした方がいいだろうな、ということで実装した。

また、作成したファイルリストは保存先とファイル名を容易に指定できるようにダイアログを出すようにした。参考にしたのは プログラム★ノートの「PowerShell ファイル保存ダイアログを使用する方法

保存先は基本的にマイドキュメント以下として、ファイル名はドロップしたフォルダ名を使うようにした。

また、作成したPowerShellファイル(ps1)ファイルに直接ドロップしてもうまくいかないので、ショートカットを作成して、リンク先を修正して使用するようにしている。

なお、今回は使用している内容の都合上、Windows OS上でのみ動作することになってるはず。

# ドラッグされたフォルダの中にあるファイル一覧をつくるやつ
#
# 使い方
#  1. このファイルを保存する
#  2. このファイルのショートカットを作成する
#  3. ショートカットのプロパティを開き"リンク先"の項目の先頭に「powershell.exe -NoProfile -ExecutionPolicy RemoteSigned -File 」をつけて保存
#  4. 作成されたショートカットの上に、フォルダをドロップすると、ウィンドウが開いて確認される
#  5. 作成するファイルリストの保存ファイル名を指定する
#  6. 出力される
#
$Args | foreach{
    echo $_.GetType()
    $searchdir = Get-Item -LiteralPath $_
}

Write-Host $searchdir.FullName "のファイル一覧を作成します"
pause

# https://pg-note.com/archives/1144 より
# 必要なアセンブリを読み込む
Add-Type -AssemblyName System.Windows.Forms 
$dialog = New-Object Windows.Forms.SaveFileDialog 

$dialog.Title = "ファイルの保存" 
$dialog.Filter = "テキストファイル(*.txt)|*.txt|csvファイル(*.csv)|*.csv|全てのファイル|*.*" 
$dialog.InitialDirectory = [Environment]::GetFolderPath("MyDocuments")
$dialog.FileName = $searchdir.Name

$ret = $dialog.ShowDialog() 

if ($ret -eq "OK"){
    Write-Host ("保存するファイル名、" + $dialog.FileName) 

    # ディレクトリの検索 start
    Get-ChildItem -Recurse $searchdir | ForEach-Object {
    $filename=$_.FullName
    
        if( !$_.PSIsContainer ){
            Write-Host $filename
            $filename|Out-File -FilePath $dialog.FileName -Append
        }
    }
    # ディレクトリの検索 end
} else {
    Write-Host ("キャンセル") 
}

pause

指定したディレクトリ内にあるexcelファイルに特定の文字列を含むセルがあるかを検索するPowershellスクリプト

たくさんあるexcelファイルのどれに必要な情報が含まれているのかわからないときに、WindowsのPowerShellとExcelアプリを連携させて各セルの中身を検索するスクリプトを作成した。

単純な処理にした場合、excelが保護されている(パスワードあり)ものがあると、スクリプト上でそのexcelファイルを開こうとしたところで、パスワード入力が出てそこで止まってしまう。

そのため、保護されているexcelファイルを効率よく除外する手法はないものか、というのを探したのだが、どうやらPowerShell/Excel連携の機能には、該当するファイルに保護がかかっているかどうかを判定する機能はない模様。

stackoverflowの「Powershell Test for Excel Password Protection」にて解決方法を発見

保護されているexcelファイルというのは、暗号化されたzipファイルで、ヘッダが特定文字列で始まるので、その文字列があれば暗号化されている、と判断して処理を飛ばす、ということが書かれていた。

$sig = [Byte[]] (0x50,0x4b,0x03,0x04)
$bytes = get-content $_.fullname -encoding byte -total 4
if (@(compare-object $sig $bytes -sync 0).length -eq 0) {
  # process unencrypted file
}

これを搭載することで、パスワード入力要求を飛ばすことができた。

で、検索した結果をCSVファイルに保存する処理を付けたものがこちら

CSV出力周りの処理がめんどくさくなってるの「PowerShellで巨大なファイルをGet-Contentし、Export-Csvするのを省メモリで行う」によるもの。これをやらないと速度がだいぶ変わるはず

$excel= New-Object -ComObject Excel.Application
$excel.visible= $false

# 検索対象ディレクトリ
$directory="C:\Users\osakanataro\Documents"

# 検索結果のcsv保存先
$outputfile="c:\tmp\output-tmp.csv"

# 検索キーワード
$keywords="ワード1","ワード2","ワード3"


# CSV出力向けの処理
$results=@()
$linecount=0
#


Get-ChildItem -Recurse $directory -Include *.xlsx,*.xls | ForEach-Object {
    $filename=$_.FullName
    Write-Host "file:", $filename

    # 暗号化チェック簡易版用
    $sig=[Byte[]] (0x50,0x4b,0x03,0x04)
    $bytes= Get-Content -Path $filename -Encoding Byte -TotalCount 4
    if( @(Compare-Object $sig $bytes -Sync 0).Length -eq 0){
        # 暗号化されていないファイルの処理 start
        $workbook=$excel.workbooks.open($filename)
        #Write-Host "ファイル:",$workbook.Name

        $workbook.Sheets|ForEach-Object {
            $worksheet = $_
            #write-host "タブ:", $worksheet.name

            $keywords | ForEach-Object {
                $keyword=$_
                $result1=$worksheet.Cells.Find($keyword)
                while($result1 -ne $null){
                    Write-Host "タブ:",$worksheet.Name," 単語:",$keyword," 場所:",$result1.Column, $result1.row, $result1.text
                    # CSV向け処理 start
                    $output = New-Object -TypeName PSObject
                    $output | Add-Member -MemberType NoteProperty -Name "ファイル名" -Value $filename
                    $output | Add-Member -MemberType NoteProperty -Name "タブ" -Value $worksheet.Name
                    $output | Add-Member -MemberType NoteProperty -Name "単語" -Value $keyword
                    $output | Add-Member -MemberType NoteProperty -Name "Column" -Value $result1.Column
                    $output | Add-Member -MemberType NoteProperty -Name "Row" -Value $result1.row
                    $output | Add-Member -MemberType NoteProperty -Name "文面" -Value $result1.text
                    $results+=$output
                    $linecount++
                    # CSV向け処理 end
                    $result2=$result1
                    $result1=$worksheet.Cells.FindNext($result2)
                    if( $result1.row -le $result2.row ) { $result1=$null }
                }
            }
        }
        # 暗号化されていないファイルの処理 end
    }else{
        # 暗号化されているファイルの処理 start
        Write-Host "   暗号化されている"
        $output = New-Object -TypeName PSObject
        $output | Add-Member -MemberType NoteProperty -Name "ファイル名" -Value $filename
        $output | Add-Member -MemberType NoteProperty -Name "タブ" -Value "パスワード保護につき確認できず"
        $output | Add-Member -MemberType NoteProperty -Name "単語" -Value ""
        $output | Add-Member -MemberType NoteProperty -Name "Column" -Value ""
        $output | Add-Member -MemberType NoteProperty -Name "Row" -Value ""
        $output | Add-Member -MemberType NoteProperty -Name "文面" -Value ""
        $results+=$output
        $linecount++

        # 暗号化されているファイルの処理 end
    }
    if(($linecount % 1000) -eq 0 ){
        $results | Export-Csv $outputfile -Encoding UTF8 -NoTypeInformation -Append -NoClobber
        $results = @()
    }

}

$results | Export-Csv $outputfile -Encoding UTF8 -NoTypeInformation -Append -NoClobber

Lifebook U9310X/D FMVU29021に Windows 11 24H2をインストールした

富士通Lifebook U9310X/D FMVU29021 のタッチペン対応モデル(ペンなし)が14000円だったので入手してみた。

とりあえずWindows 11 24H2で再インストールしてみたところ、結構なデバイスが未認識

認識していないものをリストアップ

PCIシリアルポート
PCI\VEN_8086&DEV_02E3&SUBSYS_003F1E26&REV_00\3&11583659&0&B3

PCIシリアルポート
PCI\VEN_8086&DEV_02FC&SUBSYS_003F1E26&REV_00\3&11583659&0&98

PCIシンプル通信コントローラー
PCI\VEN_8086&DEV_02E0&SUBSYS_003F1E26&REV_00\3&11583659&0&B0

PCIシンプル通信コントローラー
PCI\VEN_8086&DEV_02A9&SUBSYS_003F1E26&REV_00\3&11583659&0&F1

PCIシンプル通信コントローラー
PCI\VEN_8086&DEV_02A8&SUBSYS_003F1E26&REV_00\3&11583659&0&F0

PCIデータ取得およびシグナル処理コントローラー
PCI\VEN_8086&DEV_1903&SUBSYS_003F1E26&REV_0C\3&11583659&0&20

PCIデータ取得およびシグナル処理コントローラー
PCI\VEN_8086&DEV_02F9&SUBSYS_003F1E26&REV_00\3&11583659&0&90

PCIデバイス
PCI\VEN_8086&DEV_02A4&SUBSYS_003F1E26&REV_00\3&11583659&0&FD

SMバスコントローラー
PCI\VEN_8086&DEV_02A3&SUBSYS_003F1E26&REV_00\3&11583659&0&FC

マルチメディアオーディオコントローラ
PCI\VEN_8086&DEV_02C8&SUBSYS_00401E26&REV_00\3&11583659&0&FB

不明なデバイス
ACPI\INT3400\2&DABA3FF&0

不明なデバイス
ACPI\INT3403\SEN1

不明なデバイス
ACPI\INT33D5\2&DABA3FF&0

まずWindows Updateを終わらせて、オプションの更新プログラム を確認するといろいろある

全部を選択してインストール

再起動

Windows Updateをもう1度更新すると、さらにドライバが表示されるので全部を選択してインストール

再起動

Windows Updateをもう1度更新すると、さらにドライバが表示されるので全部を選択してインストール

再起動

Windows Updateをもう1度更新すると、さらにドライバが表示されるので全部を選択してインストール

再起動

Windows Updateをもう1度更新すると、さらにドライバが表示されるので全部を選択してインストール

これで全部認識された。

ペン操作については、WACOM AESペンで動作することを確認

ペンの細かい設定とWACOM系タブレット操作をできるように「Wacom Components Driver」をインストールすると筆圧設定なども行えるようになる。


以下は古い記述

このうち、まずは「FUJITSU Client Computing Limited」のやつを確認

FUJITSU CLIENT COMPUTING LIMITED – Firmware – 4.5.35.0
uefi\res_{5934ca0b-355c-4f53-a283-52eab7def1df}

Fujitsu Client Computing Limited – Firmware – 67.2046.0.0
uefi\res_{690b373c-5100-409b-823e-c8fd31ba0419}

Fujitsu Client Computing Limited – Firmware – 2.26.0.0
uefi\res_{eac4e93d-8568-4594-8cd1-90cc5b67e76f}

直接は関係なさそう

まずはSMバスコントローラについて検索 してみると、「INTEL – System – 10.1.27.xx」といったものが表示された

このため、Windows Updateで出てきたなかから上側の「INTEL – System – 10.1.27.3」をインストールしてみたが状況変わらず

続いて下側の「INTEL – System – 10.1.27.3」をインストールしてみると、認識した

続いてシリアルポート VEN_8086&DEV_02E3 について検索

WIndows Updateにいた「Intel – Ports – 1946.14.0.1380」をインストールしたところ

続いてVEN_8086&DEV_02FC を検索

出てくるのは「Intel – Systm 3.1.0.x」というやつなので、Windows Updateの中から「Intel – Systm 3.1.0.4140」

で・・・しばらーく待つとちゃんと認識された

PCIシンプル通信コントローラー VEN_8086&DEV_02E0 について検索

Intel – System – 2xxx.x.x.x と二千番台のものが出てきたので「Intel – System – 2031.15.0.1743」をインストールして認識

PCIデータ取得およびシグナル処理コントローラー VEN_8086&DEV_1903 を検索

「Intel – System – 8.7.1xxxx.x」がたくさんあるのでWindows Updateの「Intel – System – 8.7.10200.12510」の上側をインストール

不明なデバイスが消えたけど、PCIデータ取得およびシグナル処理コントローラー PCI\VEN_8086&DEV_1903&SUBSYS_003F1E26&REV_0C\3&11583659&0&20 は残っている。

先にマルチメディアオーディオコントローラー VEN_8086&DEV_02C8 を検索

「Intel(R) Corporation – System – 10.25.0.xxxx」となっているのでWindows Updateから「Intel(R) Corporation – System – 10.25.0.3633」をインストール

認識が変更されて Intel High Definition DSP INTELAUDIO\DSP_CTLR_DEV_02C8&VEN_8086&DEV_0222&SUBSYS_00401E26&REV_0000\4&BEE1754&0&0800 になった。

今度は VEN_8086&DEV_0222 で検索

「Intel(R) Corporation – System – 10.29.0.xxxxxx」なんだけど、Winows Updateにそれっぽいのがいない

このオーディオデバイスについては、Windows Update経由だとうまくいかないことが多いので、改めて富士通のダウンロード検索(LIFEBOOK)で検索

Realtek High Definition Audio アップデートパック (FMV-NPR46A/NPR50A/NPR44B/NPR48A/FMV-NPR49対応) からE1032544.exe をダウンロードしてインストールしたが認識は変わらなかった

SSDファームウェアアップデートツール を使ってみたところ、ssd firmwareがアップデートされた

ただ、いろいろインストールしてみたけど、ドライバ警告が消えない

Windows 10 22H2インストール編

1回やり直すついでにWindows 10 22H2でインストールしなおしてみた

認識してないデバイス数が多い

まずはWindows Updateしてみると、以下の認識に変わった

Windows11の時と同じドライバをインストールしてみたが、変わらなかった

もしかして、と、FMV Lifebook AH49/H3 に使った Realtek High Definition Audio オーディオドライバー (プレインストール版) をインストールしてみたがやっぱりだめだった

めんどくさくなってWindows Updateに表示されたドライバ群を全部インストールして再起動したらIntel High Definition DSP (INTELAUDIO\DSP_CTLR_DEV_02C8&VEN_8086&DEV_0222&SUBSYS_00401E26&REV_0000\4&BEE1754&0&0800) だけが残った

「インテル(R) スマート・サウンド・テクノロジー ドライバー」(64ビット)の修正項目とインストール方法について(2022年10月・11月発表モデル : LIFEBOOK WU2/G ほか)インテル(R) スマート・サウンド・テクノロジー ドライバー V 10.29.0.6590

Secure Boot無効でWindows 10 22H2を再インストール

最初の認識してないデバイスがちょっと違う

さっきはなかった以下

NB-2033-U
USB\VID_298D&PID_2033\203E36685852

これは[指紋センサードライバー] NEXT Biometrics 指紋センサーの模様

これに全部チェック入れてインストールしたところ下記になった

ここで再度Windows Updateすると以下が出る

再起動すると下記の認識

Windows Updateを実行すると自動的にドライバが適用されて

さらにWindows Updateを再実行して、ドライバー更新プログラムの以下を適用

ようやく全デバイス認識した

Oracle Cloudのオブジェクトストレージにcyberduckで接続する

Oracle Cloud(OCI)のオブジェクトストレージに cyberduck を使って接続する際、なんかうまくいかなかったのでメモ書き

us-phoenix-1にあるので、OCI Object Storage (us-phoenix-1).cyberduckprofile を選択したのだが選択しても表示されるサーバ名は「s3.amazonaws.com」となっている。

cyberduckprofileの内容を確認すると下記なので、本来サーバに表示されるべきなのは「<namespace>.compat.objectstorage.us-phoenix-1.oraclecloud.com」なんじゃないのか?という疑問点が・・・

	&lt;key>Protocol&lt;/key>
	&lt;string>s3&lt;/string>
	&lt;key>Vendor&lt;/key>
	&lt;string>oracle-us-phoenix-1&lt;/string>
	&lt;key>Description&lt;/key>
	&lt;string>OCI Object Storage (us-phoenix-1)&lt;/string>
	&lt;key>Hostname Placeholder&lt;/key>
	&lt;string>&amp;lt;namespace&amp;gt;.compat.objectstorage.us-phoenix-1.oraclecloud.com&lt;/string>
	&lt;key>Hostname Configurable&lt;/key>
	&lt;true/>

なお、cyberduckのバージョンは 9.1.2 (42722) でした。

じゃあ、OCIにつなぐときはどう接続すればいいのか?

とりあえず、プロファイルはOCI Object Storageを選択する

サーバ名は「<namespace>.compat.objectstorage.us-phoenix-1.oraclecloud.com」

ここでいう<namespace>は、Oracle Cloudコンソールで[ストレージ]-[オブジェクトストレージ]-[バケット(bucket)]で表示される「ネームスペース」のこととなる。

cyberduckに入力すると以下のような感じになる。

続いてAccess KeyとSecret KeyをOracle Cloudコンソールで作成する。

[アイデンティティとセキュリティ]-[ドメイン]でドメイン「Default」を選択

[アイデンティティ・ドメイン]-[ユーザー]にて、API操作用のユーザを作成

作成後、該当ユーザを選択し、[リソース]-[顧客秘密キー]を開く

「秘密キーの生成」をクリック

ここで表示される「生成されたキー」が Secret Keyとなる。

書いてある通りに再表示できないので、間違えずに保存すること。

画面を閉じて一覧に戻ると、Access Keyが確認できる。

これで、Access KeyとSecret Keyが入手できたので、Cyberduck設定画面に入力する

これで接続をすると以下のようにOracle Cloud上のオブジェクトストレージのbucket内容が表示されるのを確認できた。