カテゴリー: Windows

  • ASP.NET(VB)でEnterキーを押したときのデフォルトボタンを指定する

    Page_Loadで、Me.Form.DefaultButtonを指定することで、Enterキーを押したときに動作するデフォルトボタンを指定できる。指定は、動作させるコントロールのユニークIDを指定する。

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        ' Enterキーを押したときにイメージボタンがクリックされるのを防ぐ 
        Me.Form.DefaultButton = Me.bt_Submit.UniqueID
    End Sub
  • ウェブ版のTeamsが「Teams を読み込んでいます」で止まる

    ウェブ版のTeamsで、ミーティングのURLをクリックして、ウェブ版を起動させると、高確率で「Teams を読み込んでいます」の表示(もしくは消えて白い画面)で止まってしまう。

    下記のマイクロソフトのトラブルシュートも試して、Cookieを受け入れるようにしたが、状況は変わらない。

    https://learn.microsoft.com/ja-jp/microsoftteams/troubleshoot/teams-sign-in/sign-in-loop

    Cookieのところでないとすると、打つ手はないので、「Teams を読み込んでいます」で止まった場合には、

    ブラウザでリロードして、Teamsのウェブアプリが正常に読み込まれるまで、リロードするしかなさそうだ。

    あとは、マイクロソフトがエラーが減るように対応してくれるまで待つしかない。対応してくれればだが。

  • Powershellで他のWindowsに接続するコマンドレット

    前提として、WinRMの設定が行われていて、リモート接続できること。Powershellを開いて、”Enter-PSSession” コマンドレットを実行することで、別のWindowsにPowershellで接続でき、コマンドレットやDOSコマンドを実行することができる。

    Enter-PSSession -ComputerName 接続先のホスト名やIPアドレス -Credential ログイン名

    接続できると、プロンプトのところに、接続先のホスト名が表示されるので、どこにつながっているのかがわる。

    接続を終了するときは、”Exit-PSSession”もしくは”exit” で抜ける。

    実行例。

    PS C:\Users\zen> Enter-PSSession -ComputerName Labo07 -Credential psadmin
    PowerShell credential request
    Enter your credentials.
    Password for user psadmin: *********
    [Labo07]: PS C:\Users\psadmin\Documents>
    [Labo07]: PS C:\Users\psadmin\Documents> Exit-PSSession
    PS C:\Users\zen>
  • Veeam Backupで容量不足でバックアップ失敗したときのメッセージ

    下記のようなメッセージで、Veeam Backup(Veeam Backup & Replication 11)が失敗した。原因は、メッセージ通りで、バックアップ先のディスク(リポジトリ)の容量不足で、フルバックアップのvbkファイルが書き込めなかった。

    2023/07/08 2:23:12 :: Agent: Failed to process method {Transform.CompileFIB}: There is not enough space on the disk.
    Failed to write data to the file [D:\VeeamBK\Backup_xxxxxx - xxxxxxD2023-07-08T014313_FD59.vbk].
  • wbxcacheフォルダ

    Windowsのローカルディスク(Cドライブ)の容量が枯渇してきたので、調べたところ、「wbxcache」のフォルダが数GBの容量を使っていた。

    容量をたくさん使っていたwbxcacheのフォルダパス

    %USERPROFILE%\AppData\Local\WebEx\wbxcache

    このフォルダは、ウェブ会議ツールの、Cisco WebEXのキャッシュのフォルダだった。このフォルダの中は、キャッシュ情報だけとのこと。エクスプローラーで選択して、削除する。

    参考: https://help.webex.com/ja-jp/article/WBX9000035301/Windows-%E3%81%A7-Cisco-Webex-Meetings-%E3%81%AE%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%82%92%E6%B6%88%E5%8E%BB%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B?

  • Windows11からWindows Server 2003上のSQL ServerにODBC接続できない。

    タイトルのままではあるが、Windows11からWindows Server 2003 R2上のSQL Server 2005にODBC接続できない。

    セキュリティの関係で接続できない。ODBCドライバのバージョンを古いものに変えてもできないので、OSレベルでのセキュリティの問題で接続できない。

  • Powershellで大容量ファイルの中身をクリア(消す)する方法

    Windowsの端末(Windowsサーバ)で、ログファイルを消さずに、中身だけを消して、クリアにしたかった。Linuxだと、catコマンドを使って、空データで上書きをやっている。Windowsだと、catコマンドがないので、できず。Powershellで、同じようになる方法を調べた。

    Powershellを使って、ファイルの中身だけをクリアする(消す)には、Clear-Contentコマンドレットを使用する。Clear-Itemだとファイル自体を消してしまうが、Clear-Contentは、ファイルを残したまま、中身のみを削除する。

    Clear-Content ファイル名

    実行例)

    PS C:\apache2\logs> dir
        ディレクトリ: C:\apache2\logs
    Mode                LastWriteTime     Length Name
    ----                -------------     ------ ----
    -a---        2023/06/12     14:17  754742089 access.log
    -a---        2023/06/12     14:12  754741796 access.log.1
    PS C:\apache2\logs> Clear-Content .\access.log
    PS C:\apache2\logs> dir
        ディレクトリ: C:\apache2\logs
    Mode                LastWriteTime     Length Name
    ----                -------------     ------ ----
    -a---        2023/06/12     14:19          0 access.log
    -a---        2023/06/12     14:12  754741796 access.log.1
    PS C:\apache2\logs> dir
        ディレクトリ: C:\apache2\logs
    Mode                LastWriteTime     Length Name
    ----                -------------     ------ ----
    -a---        2023/06/12     14:20        240 access.log
    -a---        2023/06/12     14:12  754741796 access.log.1

    なお、Windows Server 2008 R2でもClear-Contentは使えたので、環境を選ばずに使えそうだ。

    参考: https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.management/clear-content?view=powershell-7.3

  • WSL2のUbuntuのイメージ保存場所

    WSL2で、実際のデータがどこにあるのか気になって調べたので、メモ。

    デフォルト設定では、ユーザアカウントの「AppData¥Local¥Packages¥」の下に、フォルダ分けされて保存されていく。WSL2の場合は、「ext4.vhdx」で保存されるのだが、WSL1でLinuxを展開して、WSL2に変換した場合は、下記のように「rootfs」フォルダの下にファイルが展開される。WSL(WSL1)の場合も同じフォルダだ。

    C:\Users\%USER%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs

    ※ %USER% の部分は、自分のユーザ名に置き換えてアクセスする。

    最初からWSL2の場合は、vhdxファイルで下記のフォルダに展開されているはず。

    C:\Users\%USER%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\

    参考:  https://learn.microsoft.com/en-us/windows/wsl/disk-space

  • PowerShell ISEでps1のファイルを開くと文字化けする

    Windows10のPowerShell ISEで、ps1ファイル(PowerShellのスクリプトファイル)を開くと、文字化けする。日本語のコメント部分が文字化けするので使いにくい。対処方法を調べてみたのだが。

    PowerShell ISEの読み込み時のデフォルトの文字コードは、ShiftJISである。この読み込み時のデフォルトの文字コードを変更することはできない。OSの文字コードではなくて、PowerShell ISEのデフォルト設定であるため。

    ps1ファイルに、BOM付でUTF-8指定されている場合には、開いても文字化けせず、UTF-8としてファイルを開いてくれる。

    Windows10は、現在はメモ帳などで作成したファイルにBOMを付けていない。デフォルトはUTF-8で、BOMなしはUTF-8解釈されるし、それで保存される。

    PowerShellのスクリプトファイルを作成するときは、保存するときに拡張子を .ps1 で保存するだけではなく、オプションとして、BOMで文字コードをUTF-8指定で保存する必要がある。もし、.ps1ファイルをPowerShell ISEで開くときに文字化けする場合は、一度、メモ帳などで開き、BOM付で保存しなおす必要がある。

    なんと厄介な。Powershell ISE は標準でインストールされているので実行時したりするときに便利だったのだけど。

  • 急にNpgsqlからAzure Database for PostgreSQLへの接続ができなくなった

    急に.NET6(.NET 3.1~7も)のNpgsqlからAzure Database for PostgreSQLへの接続ができなくなった。

    アプリケーション側からみると、Azure側のPostgreSQLに強制切断されているようにみえるログが出ている。

     ---> Npgsql.NpgsqlException (0x80004005): Exception while writing to stream
     ---> System.IO.IOException: Unable to write data to the transport connection: 既存の接続はリモート ホストに強制的に切断されました。.
     ---> System.Net.Sockets.SocketException (10054): 既存の接続はリモート ホストに強制的に切断されました。
       at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 count)

    こうなると、通常考えるのは、AzureのPostgreSQLで、コネクション数があふれているとか、高負荷状態とか、DBaaSの制約(PostgreSQL設定の外側)が原因じゃないかということ。これを1つ1つ調べていくと、異常なし。Azure側には問題が見当たらず。DBのログをAzureの管理ページがダウンロードして確認してみると、下記のログがあり。

    could not receive data from client: An existing connection was forcibly closed by the remote host.

    AzureのPostgreSQLからみると、クライアント側が切断しているとのこと。

    調べてみると、「Azure Database for PostgreSQL Single server」は、ルート証明書が変更されていることがわかった。.NETで、Ngpsqlを使っている場合は、「Baltimore CyberTrust Root」と「DigiCert Global Root G2」が使うWindows(Windows Server含む)にインストールされている必要があるとのこと。ルート証明書の確認をすると、「DigiCert Global Root G2」が存在していなかった。これが原因なので、下記のマイクロソフトの内容に従い、確認して作業した。

    Understanding the changes in the Root CA change for Azure Database for PostgreSQL Single server
    https://learn.microsoft.com/en-us/azure/postgresql/single-server/concepts-certificate-rotation#what-do-i-need-to-do-to-maintain-connectivity

    今回足りていなかったのは、「DigiCert Global Root G2」なので、Digicertのサイトからルート証明書をダウンロードした。

    https://www.digicert.com/kb/digicert-root-certificates.htm#roots
    (「Download DER/CRT」をクリックして、CRTファイルをダウンロード)

    CRTファイルを、ルート証明書が足りていないサーバに持っていき、ダブルクリックして、ウィザードからルート証明書をインストールした。配置場所は自動選択させることでルートのところにインストールされた。

    なお、ルート証明書のインストール後のOS再起動はしなくても、ルート証明書を使い始めた。