





# パラメータ定義
param (
[Parameter(Mandatory=$true)]
[string]$sourceFolder, # 移動元フォルダーパス
[Parameter(Mandatory=$true)]
[string]$destinationFolder, # 移動先フォルダーパス
[Parameter(Mandatory=$true)]
[string]$fileListPath # ファイルリストのテキストファイルパス
)
# エラーハンドリング設定
$ErrorActionPreference = "Stop"
function Move-Files {
try {
# フォルダーの存在確認
if (-not (Test-Path $sourceFolder)) {
throw "Source folder does not exist: $sourceFolder"
}
if (-not (Test-Path $destinationFolder)) {
Write-Host "Creating destination folder: $destinationFolder"
New-Item -ItemType Directory -Path $destinationFolder | Out-Null
}
# ファイルリストの読み込み
$files = Get-Content $fileListPath
# 移動処理の実行
$successCount = 0
$errorCount = 0
foreach ($file in $files) {
$sourcePath = Join-Path $sourceFolder $file
$destinationPath = Join-Path $destinationFolder $file
if (Test-Path $sourcePath) {
try {
Move-Item -Path $sourcePath -Destination $destinationPath -Force
Write-Host "Successfully moved: $file" -ForegroundColor Green
$successCount++
}
catch {
Write-Host "Error moving file: $file - $($_.Exception.Message)" -ForegroundColor Red
$errorCount++
}
}
else {
Write-Host "File not found: $file" -ForegroundColor Yellow
$errorCount++
}
}
# 結果の表示
Write-Host "`nMoving completed!" -ForegroundColor Cyan
Write-Host "Successfully moved: $successCount files" -ForegroundColor Green
Write-Host "Errors encountered: $errorCount files" -ForegroundColor Red
}
catch {
Write-Host "An error occurred: $($_.Exception.Message)" -ForegroundColor Red
exit 1
}
}
# スクリプトの実行
Move-Files
まず、移動したいファイル名のリストをテキストファイル(例:filelist.txt)に保存します。 スクリプトを実行します: powershellCopy.\move-files.ps1 -sourceFolder "C:\FolderA" -destinationFolder "D:\FolderB" -fileListPath "C:\filelist.txt"
先日、更新プログラムをインストールし、再起動後、ショートカットが消えてなくなる事象が発生しました。
発生後、よくよく見ると、Microsoft Defender v1.381.2140.0 が原因で事象が発生するみたいですね。
イメージとしては、以下の画面キャプチャの赤線が引いてある「新規」と記載があるものが消えておりました。
上記のものは自分の中で必須ではないので、復旧しなくてもよかったのですが、下記の通り、Microsoft から復旧スクリプトがリリースされていたので試してみました。
Recovering from Attack Surface Reduction rule shortcut deletions - Microsoft Community Hub
スクリプトは以下にあります。
MDE-PowerBI-Templates/AddShortcuts.ps1 at master · microsoft/MDE-PowerBI-Templates · GitHub
AddShortcuts.ps1 というファイルですね。
こちらをコピペでも何でもよいので、ps1 ファイルとして保存し、実行しました。
とりあえずこちらのエラーは以下のコマンドで回避しましょう。
Set-ExecutionPolicy bypass -Scope Process -Force
再度実行してみたところ、下記の出力がされました。
見た感じ、私の端末は該当しないバージョンです、という感じの出力がされています。
これは、事象発生後に2日程度経っていたため、すでに事象解消バージョンのDefender がインストールされているので、このような表示になっていると思われます。
ただ、強制実行できるみたいで、「-ForceRepair」パラメーターを追加してね、ということのようなので、再度追加して実行してみました。
すると、以下のような出力でした。
これが完了すると、この記事の1つ目の画面キャプチャにあるように、「新規」という表示と共にショートカットが復活しましたので、困っている方はお試しいただければと。
みなさま、こんにちは。
高級キーボードについては、色々なところで打鍵感の話とか手首の疲れ方とかが批評されていると思いますが、私が考えるキーボードの選び方、というものを書いていきたいと思います。
まず、私自身、タイピングするときに矢印キーを多様することが多いため、新卒時代から東プレのテンキーレスタイプのキーボードを使っています。
矢印キー多様するのは、Ctrl キーと一緒に利用することが多いです。
コード書くときは emacs ですが、書かないときでコードリーディングするときや、Excel で行列を一気に移動するときによく使います。
また、メール書くときも同じように利用するので、矢印キーは欲しいですね。
ちなみに、私が所属しているチーム(10数名)のキーボード事情ですが東プレ2名、HHKB 1名、FILCO1名、他といった感じです。
他のチームを見ると、これらの他にエルゴノミクスデザインを利用している人も多かったです。
私が利用しているのは少し古いモデルの以下ですが、一番リーズナブルで初めて高級キーボードを利用する人にもお薦めです。(失敗してもHHKB ほどダメージは無いですねw)
東プレ REALFORCE R2 テンキーレス 日本語配列 静電容量無接点方式 USB 変荷重 昇華印刷 かな表記あり アイボリー R2TL-JPV-IV
有効化パッケージ、もしくはイネーブルメントパッケージと呼ばれるWindowsOS のバージョンをアップグレードさせる更新プログラムがあります。
今回は、22H2 にアップグレードさせるための更新プログラムでKB5015684 についての記事になります。
公開情報はこちら。
KB5015684: 有効化パッケージを使用したWindows 10バージョン 22H2 の注目の更新プログラム
こちらですが、動的更新(Dynamic Update)という機能(アップグレード後、自動で必要な更新プログラムを適用してインストールする機能)が動作するのか調べたところ、動的更新はFU(機能更新プログラム)に適用されるものであるため、イネーブルメントパッケージは関係がないようでした。
KB5015684 のイネーブルメントパッケージを適用した場合のOS Version について、公開情報に記載がありませんでしたので、検証してみました。
結果は「19044.2130」から「19045.2130」となります。
つまり、メジャーバージョンが1あがったことになります。
適用前
また、この有効化パッケージについては、Microsoft カタログには公開がされていないため、このカタログサイトからはダウンロードできず、単体でインストールすることもできませんので、ご注意ください。
有効化パッケージを利用する場合は、WindowUpdate/MicrosoftUpdate やWSUS、ConfigMgr といった製品を利用しての配信が必要になります。
ContentTransferManager.log
---------------------------------------------
11-22-2022 20:58:25.281 ContentTransferManager 5672 (0x1628) CTMJob({0CFC7586-6924-4427-A61F-D80B65F7AE68}): CCTMJob::ProcessDownloadSuccess - successfully processed download completion.
11-22-2022 21:04:50.162 ContentTransferManager 4852 (0x12f4) This client will report download history every 1440 min.
11-22-2022 21:05:06.115 ContentTransferManager 4320 (0x10e0) CTM_StartJob - Starting CTM job {139F183F-7F56-4F21-ACD3-184A1C486746}
11-22-2022 21:05:06.147 ContentTransferManager 4320 (0x10e0) Created CTM job {139F183F-7F56-4F21-ACD3-184A1C486746} for user S-1-5-18
CMBITSManager.log
---------------------------------------------
11-22-2022 20:58:25.289 CMBITSManager 5808 (0x16b0) For CMBITS job {D18A6008-66DB-442C-8F92-A04CFA1DA15A}, CTM job {0CFC7586-6924-4427-A61F-D80B65F7AE68} entered phase CCM_DOWNLOADSTATUS_DOWNLOAD_SUCCESSFUL
11-22-2022 21:04:50.162 CMBITSManager 3452 (0xd7c) Loaded persisted job with ID {D18A6008-66DB-442C-8F92-A04CFA1DA15A}, DisplayName Express Job for content 7ca4f9b0-d72c-4974-9f24-183150df320f.1, on startup
11-22-2022 21:04:50.162 CMBITSManager 3452 (0xd7c) CCMBITSManagerStartup::FinalRelease()
11-22-2022 21:05:05.959 CMBITSManager 4320 (0x10e0) Added CMBITS job with ID:{4485462C-66C3-429B-A5C1-5BB976DAC373}, DisplayName:Express Job
11-22-2022 21:05:05.959 CMBITSManager 4320 (0x10e0) Download manifest for the job
ContentTransferManager.log(配信の最適化(DO)を利用して、配布ポイントからコンテンツをダウンロードしている)
---------------------------------------------
11-22-2022 21:17:28.741 ContentTransferManager 4320 (0x10e0) Created CTM job {792F9C7D-BDF4-4780-86FE-A052CD3AA690} for user S-1-5-18
11-22-2022 21:17:28.944 ContentTransferManager 3372 (0xd2c) CTMJob({792F9C7D-BDF4-4780-86FE-A052CD3AA690}): CCTMJob::_PersistLocations - Persisted locations
(SUBNET) http://mpdp.gibson.com/SMS_DP_SMSPKG$/7ca4f9b0-d72c-4974-9f24-183150df320f
(SUBNET) https://mpdp.gibson.com/CCMTOKENAUTH_SMS_DP_SMSPKG$/7ca4f9b0-d72c-4974-9f24-183150df320f
11-22-2022 21:17:28.959 ContentTransferManager 3372 (0xd2c) CTMJob({792F9C7D-BDF4-4780-86FE-A052CD3AA690}): CCTMJob::_DownloadContent - Created corresponding DTSJob({624860B5-17D8-45D3-A644-EDC5B6718521})
11-22-2022 21:17:28.959 ContentTransferManager 3372 (0xd2c) CTMJob({792F9C7D-BDF4-4780-86FE-A052CD3AA690}): CCTMJob::_DownloadContent - DTSJob({624860B5-17D8-45D3-A644-EDC5B6718521}) started to download from 'http://mpdp.gibson.com/SMS_DP_SMSPKG$/7ca4f9b0-d72c-4974-9f24-183150df320f' for full content download.
11-22-2022 21:17:28.959 ContentTransferManager 4788 (0x12b4) CTMJob({792F9C7D-BDF4-4780-86FE-A052CD3AA690}): CCTMJob::ProcessProgress - entered phase CCM_DOWNLOADSTATUS_PREPARING_DOWNLOAD
11-22-2022 21:17:28.991 ContentTransferManager 3540 (0xdd4) CTMJob({792F9C7D-BDF4-4780-86FE-A052CD3AA690}): CCTMJob::ProcessProgress - entered phase CCM_DOWNLOADSTATUS_DOWNLOADING_DATA
11-22-2022 21:17:29.413 ContentTransferManager 3540 (0xdd4) CTMJob({792F9C7D-BDF4-4780-86FE-A052CD3AA690}): CCTMJob::ProcessDownloadSuccess - successfully processed download completion.
11-22-2022 21:24:50.231 ContentTransferManager 3540 (0xdd4) CTMAggregateDownloadHistoryTask::HandleDownloadHistory: preparing to aggregate and send download history to server.
CMBITSManager.log
---------------------------------------------
11-22-2022 21:17:29.475 CMBITSManager 3540 (0xdd4) CCMBITSManager::NotifyDownloadComplete
11-22-2022 21:17:29.475 CMBITSManager 3540 (0xdd4) For CMBITS job {C7CE0550-B5BE-4EA6-8F25-48E9F1413632}, CTM job {792F9C7D-BDF4-4780-86FE-A052CD3AA690} entered phase CCM_DOWNLOADSTATUS_DOWNLOAD_SUCCESSFUL
11-22-2022 21:46:45.760 CMBITSManager 2756 (0xac4) Loaded persisted job with ID {D18A6008-66DB-442C-8F92-A04CFA1DA15A}, DisplayName Express Job for content 7ca4f9b0-d72c-4974-9f24-183150df320f.1, on startup
CMBITSManager.log
---------------------------------------------
11-22-2022 21:05:05.959 CMBITSManager 4320 (0x10e0) Added CMBITS job with ID:{4485462C-66C3-429B-A5C1-5BB976DAC373}, DisplayName:Express Job
11-22-2022 21:05:05.959 CMBITSManager 4320 (0x10e0) Download manifest for the job
DeltaDownload.log --------------------------------------------- 11-22-2022 21:17:28.694 DeltaDownload 4320 (0x10e0) CDeltaBitsManager::ProcessRanges - batched 1048576 bytes 11-22-2022 21:17:33.756 DeltaDownload 4320 (0x10e0) Bytes Transferred: 1048576 11-22-2022 21:17:33.756 DeltaDownload 4320 (0x10e0) CDeltaBitsManager::DownloadRanges - updated m_workingJobMap for request -720575938231795590, BGJobState = 6 11-22-2022 21:46:47.198 DeltaDownload 3788 (0xecc) ===========================================================
下記の公開情報の前提となる役割が追加されていること
サイトの前提条件 - Configuration Manager | Microsoft Docs
リモート差分圧縮(RDC) DP の IIS 構成 アプリケーション開発: ISAPI 拡張機能 セキュリティ: Windows 認証 IIS 6 管理互換性: IIS 6 メタベース互換 IIS 6 WMI 互換
ネットワーク的に接続できない場合も構築できないので、DNS で配布ポイントの名前解決ができないといけません。
AD サーバーのDNS の設定も確認しましょう。以前、原因は不明ですがドメイン参加しているのにDNS のA レコードにDP の IP Address が登録されずにハマったことがあります。
プライマリサイトサーバーからping やnslookup で疎通できるか確認しておきましょう。
また、プライマリサイトサーバーと配布ポイントに、互いのコンピューターアカウントを[Administrator]グループに追加しておきましょう。
以下は配布ポイント側でプライマリサイトサーバーCM のコンピューターアカウントを追加している様子です。プライマリサイトサーバー側にも忘れずDP 側のコンピューターアカウントを追加しましょう。
プライマリサイトサーバー側では、SQL Server Management Studio を開いて、Login アカウントに、DP のコンピューターアカウントを追加しましょう。これはアカウント参照ができないので、直接指定しないと追加できません。
リモートレジストリサービスも起動しているかチェックしておきましょう。
もし、WMI に問題がありそうな場合は、以下のファイルがプライマリサイトサーバーにありますので、こちらを配布ポイントまで持っていってください。
C:\Program Files\Microsoft Configuration Manager\bin\X64\smsdpprov.mof
配布ポイントに持っていったら、管理者権限でコマンドプロンプトを開いていただき、下記のコマンドを実行してみましょう。
mofcomp smsdpprov.mof
WMIExplorer で確認すると、下記のWMI が生成されていることが確認できます。
こちらが作成されていることを確認して、プライマリサイトサーバーから、配布ポイントの役割を削除後、再度追加してみましょう。
また、WMI 空間にプライマリサイトサーバーからリモートでアクセスできるかどうかも確認できますので、こちらも確認しておきましょう。
SQL Server 2017 以降から、Reporting Services が SQL Server セットアップ時に選択ができなくなりました。
以下の画面でいうところの黄色い箇所になります。ccmcache の最大キャッシュサイズについては、クライアント設定から設定が可能です。
$UIResourceMgr = New-Object -Com "UIResource.UIResourceMgr"
$Cache = $UIResourceMgr.GetCacheInfo()
$Cache.GetCacheElements() | % {$Cache.DeleteCacheElement($_.CacheElementID)}
あとは、こちらを test.ps1 などのファイルにして、パッケージ展開をするだけです。
パッケージ展開で気をつけるところは、PowerShell コマンドの実行には、下記のようにコマンドを指定しないとうまく動きません。
powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -WindowStyle Hidden -File test.ps1
こちらのコマンドは、以下の画面の [コマンド ライン] へ入力します。
こちらのパッケージを作成したら、今度は対象のコレクションへ配信するために展開を作成します。
ここでも注意が必要です。下記のように、配布ポイントの展開オプションで [配布ポイントからプログラムを実行する] を選択する必要があります。
こちらの展開オプションを選択しない場合、クライアントはローカルにスクリプトをダウンロードして実行してしまうため、以下のエラーが execmgr.log に記録されます。
CacheManager: Cache is in Use. DeleteCacheItem cannot proceed. CacheManager.DeleteCacheItem failed with 0x87d01203
エラーコード:0x87d01203 は、今回のシナリオでは、削除対象のコンテンツがダウンロード中であったり、実行中である場合に記録されるものとなるため、ローカルにスクリプトをダウンロードして実行すると、こちらのエラーが発生します。
そのため、上記の配布ポイントの展開オプションは必須となりますが、こちらは SMB プロトコルで通信をしますので、ポート445 が開放していない環境では利用できませんので、ご注意ください。
ソフトウェア更新ポイント、及びWSUS のSSL 化についてですが、まずその目的を理解する必要があります。
ここでは簡単のため、主にWSUS サーバーにフォーカスして説明いたします。
WSUS はスタンドアロン構成とリモート構成の2パターンが主にあります。
この内、リモート構成の場合にSSL 化の検討が必要となるかと思います。
これはリモート構成の場合、2拠点間のWSUS の同期時にデータを暗号化するかどうか、という点を検討する必要があるからとなります。
また、クライアントとサーバー間でのデータのやり取りについても同様のことが言えます。
また、WSUS は公開情報にもある通り、メタデータ(WSUS コンソールに表示される情報のデータとお考えください)については、暗号化の対象となりますが、更新プログラムのコンテンツファイル自体は、暗号化の対象となりません。
WSUS をSSL 化する場合、より具体的にはサーバー証明書を導入する場合は、このサーバー証明書を利用して、WSUS はコンテンツファイルに署名をします。(より具体的にいうと、WSUS サーバーは秘密鍵を使ってファイルを署名し、クライアントは公開鍵によってそのファイルの正当性を検証できるようにします)
これに加え、更新プログラムのファイルハッシュを生成し、そのデータをクライアントに送り、クライアントはダウンロードした更新プログラムのファイルハッシュを生成して、サーバーから送られてきたファイルハッシュを比較し、同一であれば、その更新プログラムは正しいものと判断し、更新プログラムのインストールを開始します。
つまり、WSUS をSSL 化することにより、クライアントが更新プログラムをWSUS のサーバー証明書を利用することで検証することができるようになります。
これらの手順について、以下に簡単にまとめました。
基本的には、公開情報にある以下のリンクを見れば導入が可能となりますが、その中であまり具体的に案内がない箇所にフォーカスして手順を記載してありますので、ご参考いただければと思います。
手順 2 - WSUS を構成する | Microsoft Docs
また、WSUS のSSL 化は、Configuration Manager のソフトウェア更新ポイントをTLS/SSL を利用するように構成する手順の一部でもありますので、今回は、下記の公開情報も参考にして、WSUS のSSL 化からソフトウェア更新ポイントのTLS/SSL 化までを試してみたいと思います。
PKI 証明書チュートリアルで TLS/SSL を使用するソフトウェア更新ポイントを構成する - Configuration Manager | Microsoft Docs
しかしながら、上記のWSUS をSSL 化する公開情報で、大前提となる証明書テンプレートの生成方法から、導入までの手順が、かなり分かりづらいものとなっておりますので、下記では、その手順を画面付きで記載してありますので、ご参考にしていただければと思います。
事前準備:ドメインコントローラー上でのサーバー証明書の作成
■概要
ここでは、WSUS サーバーが所属しているドメインのドメインコントローラー上で証明書テンプレートを利用して、証明書を生成する手順を示します。
■手順
1-1) [サーバーマネージャー] > [ツール] > [証明機関] (*1)をクリックします。
*1) 証明機関はデフォルトで役割が存在しないので、役割の追加をしてください。
1-2) [certsrv] で、[証明書テンプレート] を右クリックし、[管理] をクリックします。
1-3) [証明書テンプレート コンソール] 画面で、[Web サーバー] を右クリックし、[テンプレートの複製] をクリックします。
1-4) [新しいテンプレートのプロパティ] の[全般] タブにある、[テンプレートの表示名] に、[WSUS-SUP] と入力します。
1-5) [新しいテンプレートのプロパティ] 画面で、[要求処理] タブをクリックし、[秘密キーのエクスポートを許可する] をクリックします。
1-6) [新しいテンプレートのプロパティ] で、[セキュリティ] タブをクリックし、[Enterprise Admins] グループをクリックして、登録のアクセス許可を外します。
1-7) [新しいテンプレートのプロパティ] で、[追加] をクリックします。
1-8) [ユーザー、コンピューター、サービス アカウントまたはグループの選択] で、[オブジェクトの種類] から[コンピューター] にチェックをつけてOK を押します。
1-9) [ユーザー、コンピューター、サービス アカウントまたはグループの選択] に戻り、WSUS のサーバー名を指定して、[名前の確認] を押し、CM サーバー、もしくはWSUS サーバーが指定できたら、OK を押します。
1-10) [新しいテンプレートのプロパティ] で、1-9) で指定したWSUS サーバーを選択し、[アクセス許可] で、[登録] にチェックを入れてOK を押します。
1-11) [証明書テンプレート コンソール] で、[WSUS-SUP] テンプレートが追加されたことを確認し、画面を閉じます。
1-12) [certsrv] で、[証明書テンプレート] を右クリックし、[新規作成] > [発行する証明書テンプレート] をクリックします。
1-13) [証明書テンプレートの選択] 画面で、[WSUS-SUP] を選択します。
1-14) [certsrv] で、[WSUS-SUP] が追加されたことを確認します。
事前準備はここまでとなります。
ここまで準備ができれば、後は下記の公開情報の通りに手順を踏めば、WSUS のSSL 化ができます。
PKI 証明書チュートリアルで TLS/SSL を使用するソフトウェア更新ポイントを構成する - Configuration Manager | Microsoft Docs
作成したテンプレートを利用して証明書要求をサーバーからドメインコントローラーに対して行い、IIS に証明書をバインドする手順となります。
確認方法として、MECM のログを確認することになりますが、問題なく確認できるかと思います。