iPhoneにOpenVPNアプリをインストール
(オレンジ色の丸のようなアイコン)
client.ovpnをファイル共有系(Dropboxなど)のアプリに入れて、
iPhone>Dropbox>デバイスに保存>OpenVPNを選択してインポートする。
OpenVPN>Upload File>ADDを実行
ユーザーIDとパスワードを入力する。
OpenVPNからVPN接続をオン・オフできる。
iPhoneにOpenVPNアプリをインストール
(オレンジ色の丸のようなアイコン)
client.ovpnをファイル共有系(Dropboxなど)のアプリに入れて、
iPhone>Dropbox>デバイスに保存>OpenVPNを選択してインポートする。
OpenVPN>Upload File>ADDを実行
ユーザーIDとパスワードを入力する。
OpenVPNからVPN接続をオン・オフできる。
他のシートに特定の値があった場合、両方に色を付ける
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 |
Sub auto_open() Call CellsCondition End Sub Sub CellsCondition() On Error GoTo ex For Each ws In ThisWorkbook.Sheets If ws.Name <> "xxx" And ws.Name <> "xxx" Then ws.Columns("A").FormatConditions.Delete For r = 5 To 125 For c = 1 To 1 Set f = ws.Cells(r, c).FormatConditions.Add(xlExpression, xlEqual, CreateFormatConditionsString(r)) f.Interior.Color = RGB(255, 0, 0) f.StopIfTrue = False Next c Next r End If Next Exit Sub ex: MsgBox "条件付書式の設定に失敗しました。" End Sub Function CreateFormatConditionsString(r) For Each ws In Sheets If ws.Name <> "xxx" And ws.Name <> "xxx" Then tmp = tmp + "COUNTIF(" & ws.Name & "!C5:C125,C" & r & ")+" End If Next tmp = Left(tmp, Len(tmp) - 1) ' 最後の+を削除 CreateFormatConditionsString = "=AND((" & tmp & ")>1,C" & r & "<>""xxx"",C" & r & "<>""xxx"",C" & r & "<>""xxx"")" End Function |
条件だけ抜き出すと、
=AND((
COUNTIF(シート名!C5:C125,C20)+
COUNTIF(シート名!C5:C125,C20)
)>1,C20<>”比較除外”,C20<>”比較除外”,C20<>”比較除外”)
となっている。
先日、本ブログをXserverからAzure AppServiceに移行したが、予想よりコストがかかってしまうので、残念だけどXserverに戻すことにした。
今回はドメインがそのままなので簡単。
●Azure AppService WP
WPvivid Backupでバックアップを作成。
●Xserverのサーバーパネル(appbay.orgドメインを選択)
PHP Ver.切替から、PHPバージョンを最新にする。
SSL設定から、オンにする。
DNSレコード設定から、appbay.orgドメインのAレコードをXserverのIPアドレスにする。
WordPress簡単インストールを実行する。
しばらく待って、SSL、DNSが反映されたらWPvivi Backupをインストールし、復元すれば完了。
●PCのログインアカウントを個人用からEntraIDへ変更。
Entra管理センター>ユーザー>すべてのユーザー>新しいユーザー>新しいユーザーの作成
必要な情報を入力し、割り当てで、グローバル管理者を選択する。
一旦、ログアウトし、作成したアカウントでログインすると、
・パスワードの再設定
・Microsoft Authenticatorの設定
・電話番号の確認
が必要。
とりあえず、このアカウントをPCに登録すればログインできるようになる。
登録は、
設定>アカウント>職場または学校へのアクセス>接続>このデバイスをMicrosoftEntraIDに参加させる
これでユーザーの切り替えが表示されログインできる。
ユーザープロファイルが新しく作成される。
●Windows Hello for Business無効化
Entraに参加すると自動でHello Businessが有効になってしまうので、
gpedit.msc>管理用テンプレート>Windowsコンポネート>Windows Hello for Business
Windows Hello for Businessの使用→無効
・コマンドプロンプトから
1 |
certutil -deletehellocontainer |
を実行し再起動。
※PINを登録した後にgpedit.mscで無効にしてもPINは無効化できない。
※コマンドだけ実行しても再起動時にPINの登録を求められる。(Shift+F10でも回避できない)
●ログイン画面にユーザー切り替えが表示されない場合。
secpol.msc>@ローカルポリシー>セキュリティオプション
・対話型ログオン:最後にサインインしたユーザーを表示しない
有効に変更
など設定してみる。
※個人用で他のユーザーを表示したい場合は有効する。逆にEntraで有効にすると他のユーザが選べなくなってしまう?
●Officeライセンス付与
Microsoft 365 管理センター
ホーム>サブスクリプション>その他の製品の追加
Microsoft 365 Business Premium
詳細をクリック
Teams無しの試用で登録。
Microsoft 365 管理センター
ユーザー>アクティブなユーザー>該当のユーザー>ライセンスとアプリ
Microsoft 365 Business Premium
のライセンスを付与する。
PCからOfficeを起動すればOK。
●Intune
AzurePortal>EntraID>モビリティ (MDM および WIP)
からMDM探索URLを確認しておく。
・デバイスを登録
今回はすでにEntraIDに接続していたので、
アカウント>職場または学校にアクセスする>デバイス管理のみに登録する
アカウント>職場または学校にアクセスする
にMDMに接続済みと表示されればOK。
SQLServerは、MDFファイルを直接操作したり色々やってみたが、一括バックアップツールを使うのが一番簡単。
スタートメニュー>弥生シリーズ>弥生一括バックアップツール
(もし一括バックアップツールが無い場合、弥生製品のインストーラーから追加)
現状のデータをバックアップし、SQLServer更新して、復元すればOK。
https://support.yayoi-kk.co.jp/faq_Subcontents.html?page_id=25326
正しい方法ではないけど、SQLServerの前のバージョンをアンインストールしなくても、新規のインスタンス名を変更すればインストールできる。弥生バックアップツールはインスタンス名を指定することができる。
●いくつかつまずいた点。
・弥生会計はDocker上のSQLServerでも接続できたが、一括バックアップツールはDocker上のSQLServerに復元できなかった。弥生一括バックアップツールは起動時にSQLServerのインスタンスが一つもないと、自動終了してしまう。MDFファイルを一つずつアタッチしていくなら、Docker上でも問題なかった。
・弥生一括バックアップツールの復元で止まってしまう。
バックアップファイルが入っているフォルダにアクセス権がなかった。
とりあえずEveryoneのフルアクセス付与。
・旧バージョンの弥生会計ファイルのコンバート失敗(エラーコード250)
今回の実験では、
SQLServer(2014→2022)と同時に弥生会計(23→24)も更新。
24で23のデータをコンバートしようとするとエラーになるので、インスタンス名を揃えたり色々やったが、結果的にSQLServerインストール時に、
SQL Server データベース エンジンのアカウント名を
NT AUTHORITY\SYSTEM
にするのを漏らしていたことが原因。
●Docker
・docker-compose.yamlを作成
version: ‘3’
services:
mssql:
image: mcr.microsoft.com/mssql/server:2022-latest
container_name: yayoi-mssql
ports:
– 49153:1433
environment:
– ACCEPT_EULA=Y
– MSSQL_SA_PASSWORD=passw0rd!
– MSSQL_PID=Express
– MSSQL_LCID=1041
– MSSQL_COLLATION=Japanese_CI_AS
volumes:
– ./db/DATA:/var/opt/mssql/data
– ./db/LOG:/var/opt/mssql/log
– ./db/secrets:/var/opt/mssql/sec
– ./home:/home
.はdocker-compose.yamlのある場所
・起動
docker-compose up -d
・接続
SSMSも弥生会計も、
・localhost,49153
・sa
・passw0rd!
と指定すれば接続できる。
・SSMSからSQLServerに接続したとき、
信頼されていない機関によって証明書チェーンが発行されました
と表示される場合、
オプション>接続プロパティ>暗号化接続
のチェックを外す。
●SSMSで直接ファイルの場所を確認する場合
SSMSでDBに接続し
右クリック>プロパティ>ファイル
これでファイルの場所を確認できる。
実験のため本ブログWordPressを、
・ドメイン変更(Xserver→MuuMuu)
・ホスティング変更(Xserver→AzureAppService)
AzureはVMもあるが、今回は簡単なAppServiceを使ってみる。
●Azure/Entra ID
WordPressとは関係ないが、今までMSは個人用アカウントだったので、EntraIDに移行。ドメインも揃えてしまう。
AzurePortal>EntraID>カスタムドメイン>カスタムドメインの追加
所有しているドメインを入力し、ドメインの追加をクリック。
AzurePortalで、TXTレコードの情報を確認する。ドメインはMuuMuuドメイン取得+DNSはXserverを指定していたので、XserverのサーバーパネルのDNSレコード設定から、
・ホスト名:空白(そのまま)
・種別:TXT
・内容:Azure記載通り
・TTL:Azure記載通り
・優先度:0(そのまま)
で入力し、AzurePortalで、確認を実行。これで登録される。
●Azure/VM
今回の移行では利用しないが一応作成してみる。
AzurePortal>Virtual Machines>作成>Azure仮想マシン
・サブスクリプション、リソースグループ:以前作成したものを指定する。
・仮想マシン名:Machine-01
・地域:(US) East US
・可用性オプション:可用性ゾーン
・可用性ゾーン:ゾーン1
・セキュリティの種類:トラステッド起動の仮想マシン
・VMアーキテクチャ:x64
・サイズ:Standard_B1s
・管理者アカウント:SSH公開キー
・ユーザー名:適当
・SSH公開キーソース:そのまま
・キーの組名:そのまま
・受信ポート:選択したポートを許可する(80,443,22にチェックする)
作成を実行。
秘密キーダウンロードのダイアログが表示される。
少したつと展開が成功しましたと表示され完成。
これでIPアドレスとダウンロードしたpemファイルでSSHがつながる。
●Azure/AppService
AzurePortal>AppService>作成>WordPress on AppService
・サブスクリプション、リソースグループ:以前作成したものを指定する。
・基本:地域:Japan East
・アドオン:Azure CDN:チェックを外す。
にして、その他はそのまま、WordPressの必要事項を設定し、作成を実行。
・デプロイ後
初回、遅くて使い物にならず。通常の処理でタイムアウトするような状態になってしまった。(Azure CDNのチェックを外してみたりした)少し時間が経つと安定してきて気がついたけどDNS浸透が原因。
●AzureDNS
今回は利用しないが、余っているドメイン1つをMuuMuuから引っ越しておいてみる。
AzurePortal>DNSゾーン
・サブスクリプション、リソースグループ:以前作成したものを指定する。
・名前:ドメイン名を入力しておく。
その他はそのままで、作成。
デプロイが完了したら、リソースに移動。
表示されるネームサーバー4つをドメインを取得したサイトで設定する。
●Azure/AppServiceに独自ドメイン設定
MuuMuuからXserverのNSを指定しており、メールサーバーはXserverを利用する。
AzurePortal>AppService>カスタムドメイン>カスタムドメインの追加
・ドメインプロバイダー:その他のすべてのドメインサービス
・TLSまたはSSL証明書:AppServiceマネージド証明書
・TLS/SSLの種類:SNI SSL
ドメインを入力し検証をクリック。
表示されるレコードをXserverで入力。
●Azure/AppServiceのWordPressファイルにアクセスする場合
AppService>デプロイセンター>FTPS資格情報
●WordPressの引越
・新WordPressのインデックス停止
設定>表示設定>検索エンジンでの表示
インデックスしないようにしておく。
(結局WPvividでチェックは外れるので、長時間放置しないのなら不要)
・WPvivid
新旧WordPressにWPvividを入れる。
旧WordPress>WPvividで、
データベース + ファイル (WordPress ファイル)
バックアップをローカルに保存する
を選択(初期値)しバックアップ、ダウンロード。
新WordPress>WPvividで、
ダウンロードしたzipをアップロード、復元。
・注意点
ユーザー、プラグインやテーマなども旧WordPressが引き継がれる。
・転送処理
旧WordPressの.htaccessに以下を追記
1 2 3 |
RewriteEngine On RewriteCond %{REQUEST_URI} !(/xxx/) RewriteRule ^(.*) https://appbay.org/$1 [R=301,L] |
※xxxの部分は転送を除外するURLがある場合
●WordPressプラグイン
Crayon Syntax Highlighter
が動かなかったので、
Urvanov Syntax Highlighter
というものに乗り換え。
・SiteGuard WP Plugin
今回から導入。
NGINXなのでログインURLを変更すると不具合が発生するので、
ログインロック、XMLRPC防御だけ有効にしておく。
Win11インストール後、ローカルアカウントを作成せず、直接EntraIDでログインする実験。
●EntraIDの準備
AzurePortal>メニュー>Microsoft Entra ID>追加>ユーザー>新しいユーザーの作成
ユーザープリンシパル、表示名、パスワードを指定し、次をクリック。
必要な個人情報を入力し、次をクリック。
ロールは空白のまま、次をクリック。
作成を実行
●Hyper-V有効化
optionalfeatures>Hyper-V
を有効化。
関連の機能は全て無効化でもOK。
●WindowsのISOをダウンロード。
●仮想マシン作成
・Hyper-Vマネージャ>操作>新規>仮想マシン
名前:適当(Win11)
世代指定:第2世代
メモリ割当:4096MB
ネットワーク構成:以前作成した固定IPの外部ネットワークを選択
仮想HDD:64GB
インストールオプション:
イメージファイルからOSをインストールするで、ISOを選択
これで仮想マシンが作成される。
Win11の場合、以下の設定が必要。
・Hyper-Vマネージャ>メインメニュー>仮想マシン>右クリック>設定
>セキュリティ
トラステッドプラットフォームモジュールを有効にするにチェック。
>プロセッサ
仮想プロセッサの数を2に変更。
●インストール
プロダクトキーがありませんをクリック。
Windows11Proを選択する。
設定画面が起動するので、進める。
職場または学校用に設定するを選択し、最初に作成したアカウント情報を入力。
これでログインできた。
●Hyper-V有効化
optionalfeatures>Hyper-V
を有効化。
関連の機能は全て無効化でもOK。
●WindowsServerのISOをダウンロード。
●仮想マシン作成
・Hyper-Vマネージャ>操作>新規>仮想マシン
名前:適当(Windows Server 2022)
世代指定:第2世代
メモリ割当:4096MB
ネットワーク構成:Default Switch
仮想HDD:64GB
インストールオプション:
イメージファイルからOSをインストールするで、ISOを選択
これで仮想マシンが作成される。
●仮想マシン設定
・Hyper-Vマネージャ>メインメニュー>仮想マシン>右クリック>設定>
セキュアブート
セキュアブートを有効にするのチェックを外す。
・Hyper-Vマネージャ>メインメニュー>仮想マシン>右クリック>設定>
接続>起動
Start PXE over IPv4
が表示される前になにかキーを押す。
・Hyper-Vマネージャ>メインメニュー>仮想マシン>右クリック>設定>
自動開始アクション
常にこの仮想マシンを自動的に起動するにチェック。
●ゲストOS
種々設定作業。
リモート予定なので、sysdm.cplからリモート許可。
パスワードは適当(123abc!など)
●他のPC(ホストOSではなく)からリモート接続する設定。
・Hyper-Vマネージャ>サイドメニュー>PC名>右クリック>仮想スイッチマネージャ
新しい仮想ネットワークスイッチ>内部>仮想スイッチの作成をクリック
適当(TEST)な名前をつけ、外部ネットワークを選択。
・Hyper-Vマネージャ>メインメニュー>仮想マシン>右クリック>設定>
ハードウェアの追加>ネットワークアダプター>追加
・ゲストOS
ncpa.cpl>新しくできたNICのプロパティ>IPv4のプロパティ
IPアドレス、サブネットマスクを指定、ゲートウェイは空白のまま
これで固定IP宛に他のPC(ホストOSではなく)からもリモート接続できる。
●ActiveDirectoryインストール
サーバーマネージャ>役割と機能の追加>役割ベースまたは機能ベースのインストール
Active Directory ドメインサービス
にチェック。
必要に応じて対象サーバーを自動的に再起動する
にチェック。
サーバマネージャ>通知
このサーバーをドメインコントローラに昇格する。
をクリック。
新しいフォレストを追加する
を選択。
ルートドメイン
ad.xxx.com
とする。
ディレクトリサービスの復元モードのパスワードを決める。
適当に(123abc!など)
DNSオプションはそのまま次に。
NetBIOS名ドメイン名はそのまま次に。
デフォルトフォルダはそのまま次に。
確認画面までいったらインストールを実行。
●ユーザー追加
サーバーマネージャ>ツール>ActiveDirectoryユーザーとコンピュータ
Usersで右クリック>新規作成>ユーザ
ログオン名を決め、パスワードは適当に(123abc!など)
ユーザーは次回ログオン時にパスワード変更が必要のチェックを外す。
パスワードを無期限にするにチェック。
以下クライアントPCにて
ncpa.cpl>プロパティ
IPv4>プロパティ>優先DNSサーバーにADサーバーを指定
設定>ユーザ>職場または学校にアクセスする>接続
このデバイスをローカルのActiveDirectoryドメインに参加させる
ドメイン名としてad.xxx.comと入力
先ほど作成したユーザー名、パスワードを入力。
これで、ユーザー名ad\ユーザー名のような形でログインすることができる。
***
今回は、Hyper-VのゲストOSのADにホストOSが参加したので複雑になってしまった。ネットワークの部分が分かりづらかったので整理。(あまり理解できていない)
●スイッチマネージャから作成するスイッチ
外部を作成する場合、デフォルトは無効化しても大丈夫
・DefaultSwitch
ホストOS:OK
インターネット:OK
物理ローカル:NG
・外部
ホストOS:OK
インターネット:OK
物理ローカル:OK
・内部
ホストOS:OK
インターネット:NG
物理ローカル:NG
・プライベート
ホストOS:NG
インターネット:NG
物理ローカル:NG
●動作
Hyper-Vマネージャ>仮想スイッチマネージャ
から仮想スイッチを作成すると、
ホストにNICが表示される。
Hyper-Vマネージャ>右クリック>設定>ハードウェアの追加
からネットワークアダプタを追加(仮想スイッチ指定)すると、
ゲストにNICが表示される。
ホスト側の仮想NICは仮想スイッチ連動しているよう。
もともとは、
ホストPC — WiFi — ルーター
こういう経路だったが、結果、以下のようになった。
仮想NIC — ゲストPC
|
仮想スイッチ — ※Hyper-V拡張可能仮想スイッチ — (ブリッジ — WiFi) — ルーター
|
仮想NIC — ホストPC
※ブリッジのプロパティの
Hyper-V拡張可能仮想スイッチ
をチェックされることで、ブリッジと仮想スイッチでつながっている。
IPアドレスは以下の通り。
・ゲスト(WindowServer)
IPA:192.168.11.200/255.255.255.0
DGW:192.168.11.1
DNS:192.168.11.1
・ホスト
IPA:192.168.11.201/255.255.255.0
DGW:192.168.11.1
DNS:192.168.11.200/192.168.11.1(プロパティのIPv6を外す)
※このホストのNICは仮想スイッチ作成時に作成されたNIC
(ほぼ管理画面に入らないので、確かではないけど)以前からMicrosoft Authenticatorを使って、という表示があったような気がするが、面倒で放っておいたらMicrosoft Authenticatorを使わないとログインできなくなってしまった。
>スマホにMicrosoft Authenticatorをインストール。
>職場または学校のアカウントの追加を選択。
>必要な情報を入力。
>アプリの最初の画面、インストールされたアカウントをクリック。
>2段階認証のセットアップをクリック。
>表示されたQRコードをスマホでスキャン。
●Azure SQL Database 作成
https://azure.microsoft.com/ja-jp/products/azure-sql/database
>SQL Database無料で試す。
>無料で試す。
>顧客契約に同意しますのみチェック。あとは外して次へ。
>電話、カードによる本人確認。
AzurePortalが開く
https://portal.azure.com/#home
●SQL データベースの作成
サブスクリプション:変更なし
リソースグループ(新規作成):適当な名前
データベース名:適当な名前
サーバー(新規作成):適当な名前
場所:(US)East US
認証方法:SQL 認証を使用する
※サーバー管理者、パスワードを作成する。
ワークロード環境:開発
コンピューティングとストレージ(データベースの構成):変更なし
バックアップ ストレージの冗長性:ローカル冗長バックアップストレージ
>作成
※安価にしたいので後に以下のように変更
ホーム>SQLデータベース>コンピューティングとストレージ
DTUベースのBasicに変更。
●IPアドレスを指定して接続を許可
Azureポータルのメイン画面
ネットワーク>選択したネットワーク
+クライアントIPアドレス(※現在の自分のIPアドレスが表示)
を追加し、保存。
●SSMSから接続
データベースエンジン
サーバー名:自分で決めたサーバー名.database.windows.net,1433
認証:SQL Server認証
ID:作成したID
パスワード:作成したパスワード
●Accessから接続(リンクテーブル)
外部データ>リンクテーブルマネージャ>追加
から情報を入力。
オプションからDBを選択する。
●Excelから接続
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Sub test() Set cn = CreateObject("adodb.connection") Set rn = CreateObject("adodb.recordset") ' OLEDB 'cn.Open "Provider=SQLOLEDB;Data Source=サーバー名;User Id=xxx;Password=xxx;Initial Catalog=DB名" ' ODBC 'cn.Open "Driver={SQL Server};Server=サーバー名;Database=DB名;Uid=xxx;Pwd=xxx" rn.Open "select * from tbl", cn ActiveSheet.Cells(1, 1).CopyFromRecordset rn If rn.State = 1 Then rn.Close Set rn = Nothing If cn.State = 1 Then cn.Close Set cn = Nothing End Sub |
●ODBC/OLDDB
・ODBCの確認方法
スタートメニュー検索>odbc
・OLEDBの確認方法
.udlファイルを作成して開く。
(32bitの場合の場合、C:\Windows\SysWOW64\cmd.exe経由でudlファイルを開く)
ODBC:アプリケーション側のライブラリ+接続のドライバ
OLEDB:アプリケーション側のライブラリ+接続のプロバイダ
という用語になる。ライブラリはすでにインストールされていて、ドライバ・プロバイダがデータソースごとに必要。
プロバイダはCOMコンポーネントを実装した。実体はdll(プログラム)。
ADOはODBC、OLEDBを使うラッパーと考える。
OLEDBのプロバイダ内で、ODBCを使うこともある。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$target = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range" for($i = 1; $i -le 5; $i++) { Write-Output "${target}${i}" $x = Test-Path -LiteralPath "${target}${i}" Write-Output $x if (-not $x) { New-Item -Path "${target}${i}" -Force Set-ItemProperty -Path "${target}${i}" -Name "file" -Value 2 -Type DWord # -Value 1 ローカルイントラネット Set-ItemProperty -Path "${target}${i}" -Name ":Range" -Value "192.168.*.*" -Type String break } } |