2023年1月15日 星期日

Edge Preview window opens and hangs up

近日有許多人反映 透過Edge 點選列印之後,預覽列印視窗會不停的轉圈圈,導致無法列印,非常困擾。




透過Google大神爬了一下,發現有許多鄉民都有此問題,試過之後都無法解決(有停用DLP、關閉UAC、重設瀏覽器、重設使用者(X)),大概就只差沒重新安裝作業系統了。


還有鄉民說 是有重複的印表機名稱造成 !!!


期間也曾嘗試把防毒軟體停用,但都沒有效。


也有鄉民提到Ctrl + P 無法列印,Ctrl+Shift +P 就正常。


WTF,真的~XD


困擾多日之後,突然靈光一動,想說先把Print Spooler 服務先停用看看。(之前有測試過重新啟動這個服務還是無效)


此時測試列印=>正常。(但會沒有印表機可以選,服務都停用了所以沒印表機是正常的)


再把服務啟動後,測試列印也是正常。


重新啟動系統看是否恢復,測試也正常。


看到師兄們都回來了,真是備感欣慰(X




2021年4月19日 星期一

Adobe Acrobat Reader DC 的msi檔案

 是這樣的,Adobe Acrobat Reader官方下載的MSI檔案通常都不是最新的(或是久久才會更新一次),中間有著大大小小的MSP更新包,這對於軟體派送管理上多多少少就面臨了一些些的挑戰。

期間也拜讀網路上大神的文章,大部分都隨著Adobe更新之後而失效(明明就是自己失敗)

直到拜讀到一位大神的"製作 Adobe Acrobat Reader DC 的msi檔案並利用GPO派發(2020後版本)"

才又燃起一線希望,果然照著抄可以順利的打包XD,真是非常感謝呢。

事前準備:下載Adobe Reader DC離線版本以及MSP更新檔案(DC Release Notes — Release Notes for Acrobat DC Products)

Adobe官方提供的FTP MSP檔似乎沒有在更新?建議可以透過上方連結下載MSP檔案,

大致的步驟如下(有興趣的鄉民可以參考該位大神的連結)

1. 把下載的MSI檔案用7-zip解壓縮到特定資料夾內(1)。

2. 執行特定資料夾內(1) msiexec /a AcroRead.msi 將檔案安裝到特定資料夾內(2)。

3.  執行特定資料夾內(2)  msiexec /a AcroRead.msi  /p AcroRdrDCUpd2100120149.msp  安裝到特定資料夾(3)

4.將特定資料夾內(2)的AcroRead.msi 複製到特定資料夾(3)。


Reference

製作 Adobe Acrobat Reader DC 的msi檔案並利用GPO派發(2020後版本)

2021年4月15日 星期四

一波多折的WSUS (Win 2012R2)

 事情是這樣的:

環境中的WSUS,隨著時間的增長,不知不覺長成一個回不去的月半子。

只能不停地擴充空間搭配伺服器清理精靈,一直撐著。

終於該來的還是來了,伺服器清理精靈也罷工了(每次在不需要更新的檔案清理都會造成服務連線逾時),接著展開一段漫長的WSUS減月巴之旅,

舉凡網路上的各種偏方(調整DB、IIS、PS....)能嘗試的都試過了,大概就只剩下WSUSUtil RESET還沒做了

就在已經做好打掉重練,原地重建的時候。

皇天不負苦心人,讓我爬到這篇Deleting Updates from WSUS

裡面提到了,還很貼心的附上參考連結

To prevent the next WSUS sites from inheriting unnecessary updates, there's a script to delete the updates that the Server Wizard is not removing after declining

結果該參考連結網誌已經移除了(天啊~~真是晴天霹靂)

不過還好谷歌大神有網頁快取的功能,趕快去爬那篇連結,順利抄作業,就當我信心滿滿以為可以順利解決的時候,還是出現連線逾時.............(當下內心真的是又一次的晴天霹靂)

所幸皇天不負苦心人,在該篇網誌下方有位熱心的鄉民Alexey Petrenko留下了一段珍貴的解決方法


You can stop time out by narrow down list of updates or drivers. I resolved it like this:
[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | out-null
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer($UpdateServer, $UseSSL, $Port);
$updatescope = New-Object Microsoft.UpdateServices.Administration.UpdateScope
# you can choose one of these attributes:
#$updatescope.ApprovedStates = [Microsoft.UpdateServices.Administration.ApprovedStates]::NotApproved
#$updatescope.IncludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::NotInstalled
#$updatescope.FromArrivalDate = [datetime]”03/11/2020"
#$updatescope.ToArrivalDate = [datetime]”04/02/2020"

$updatescope.UpdateTypes = [Microsoft.UpdateServices.Administration.UpdateTypes]::Driver
#$updatescope.UpdateTypes = [Microsoft.UpdateServices.Administration.UpdateTypes]::SoftwareUpdate

Then you can remove your updates
$wsus.getupdates($updatescope) | Where {$_.UpdateClassificationTitle -eq 'Drivers'} | ForEach-Object { $wsus.DeleteUpdate($_.Id.UpdateID); Write-Host $_.Title removed }
Check for classification 'Drivers' second time is abundant in that case but you can leave it. It will work anyway.

加入了限縮條件之後就可以順利的減月巴了,看著慢慢瘦下來的WSUS,真的很欣慰。

希望能幫到一起在WSUS減肥之路上的小夥伴們。


以下為參考範例,自己修改後存成PowerShell後執行(有哪些條件可以參考下方微軟提供的連結)

[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | out-null

$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer($UpdateServer, $UseSSL, $Port);

$updatescope = New-Object Microsoft.UpdateServices.Administration.UpdateScope

# you can choose one of these attributes:

$updatescope.ApprovedStates = [Microsoft.UpdateServices.Administration.ApprovedStates]::Declined

#$updatescope.IncludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::NotInstalled

$updatescope.FromArrivalDate = [datetime]”04/01/2021"

$updatescope.ToArrivalDate = [datetime]”04/16/2020"


$updatescope.UpdateTypes = [Microsoft.UpdateServices.Administration.UpdateTypes]::Driver

#$updatescope.UpdateTypes = [Microsoft.UpdateServices.Administration.UpdateTypes]::SoftwareUpdate


#Then you can remove your updates

$wsus.getupdates($updatescope) | Where {$_.UpdateClassificationTitle -eq 'Drivers'} | ForEach-Object { $wsus.DeleteUpdate($_.Id.UpdateID); Write-Host $_.Title removed }


Deploy中的無法直接刪除,此時可以先Decline 在做刪除的動作,作法也很簡單,僅列出差異,詳情可以參考下方第二個連結。

$updatescope.ApprovedStates = [Microsoft.UpdateServices.Administration.ApprovedStates]::Any
$updates=$wsus.getupdates($updatescope) | Where {$_.UpdateClassificationTitle -eq 'Drivers'}
$updates.decline()
$updates| ForEach-Object { $wsus.DeleteUpdate($_.Id.UpdateID); Write-Host $_.Title removed }
)

Reference

Deleting Updates from WSUS

WSUS and PowerShell: Declining and Deleting updates based on keywords

Microsoft.UpdateServices.Administration Namespace

2020年8月13日 星期四

7-zip的SFX

 自從7-zip 9.20版本之後,似乎把SFX的功能另外獨立出來,而網路上爬到的大部分教學都還是7-zip 9.20版,這時讓我突然懷疑是否已經將此功能移除了。ORZ

這個疑問就一直放著放著放著,然後就忘記了,直到某天突然真的有需要使用到此功能時,才想說不可能就這樣消失吧,趕快召喚GOOGLE大神,終於拜讀到一篇7zS.sfx does not exist in the 7-Zip folder - Stack Overflow。原來只是把檔案放到LZMA 軟體開發套件,下載解壓縮之後可以在bin資料夾中找到,使用方式與之前相同。

建立config.txt(範例如下方)

;!@Install@!UTF-8!

 Title="Title"

 RunProgram="Install.exe"

 ;!@InstallEnd@!

把要執行的檔案先進行打包成7Z,例如Install.7z

最後執行命令

copy /b 7zSD.sfx + config.txt + "Install.7z" Install.exe


參考來源:

7zS.sfx does not exist in the 7-Zip folder - Stack Overflow

How to Create a Silent, Self-Extracting Installer for use with Windows Configuration Designer

2019年4月19日 星期五

建立大量的mklink ?

事情是這樣的

由於某些緣故,某個系統資料夾內的空間快面臨不足的情況,爬了一下文似乎可以利用mklink的方式把檔案先暫時搬移到其他地方再建立連結回來。

但是由於要搬移的資料夾數量實在太多,一筆筆去建立連結似乎太傻了點,爬了一下文章,有鄉民提供一個不錯的方式。

情境如下:
把C:\temp下的資料夾移動到d:\temp
自動去掃描d:\temp底下有多少資料夾,自動建立連結回c:\temp
語法範例如下:
for /f "delims==" %%k in ('dir "d:\temp\"  /b') do (
mklink /d "c:\temp\" "%%~k"
)
Reference
How do I create a symbolic link using a batch script in windows?

2019年2月1日 星期五

AD 群組原則不會複寫?

事情是這樣的,我有3台DC
我在DC1 設定好群組原則之後,發現DC2&DC3 上並不會同步寫入群組原則

檢查事件檢視器中的應用程式及服務紀錄檔,File Replication Service中可以發現錯誤訊息:
檔案複寫服務無法使用DNS名稱 dc2.xx.xx.xx 啟動...
此時跑到DC2檢查發現ntfrs 服務啟動失敗
大概的錯誤訊息是
警告: 在修復過程中,複本樹狀目錄中的資料可能無法使用。如果這 個錯誤繼續發生,您應該將上述的登錄參數重設為 0,以避免自動修復 意外地將資料變成無法使用。 
 
如果要變更這個登錄參數,請執行 regedit。 
 
請按 [開始] 功能表、[執行],然後輸入 regedit。 
 
展開 HKEY_LOCAL_MACHINE。 
請按機碼路徑: 
   "System\CurrentControlSet\Services\NtFrs\Parameters" 
請在下列值名稱上按兩下: 
   "Enable Journal Wrap Automatic Restore" 
並更新值。 
後來發現沒用,不過看到有個鄉民分享的方式,照著操作之後竟然成功

下方引用這位鄉民的分享步驟

raytracy iT邦大神 1 級 ‧ 2010-11-23 12:59:05檢舉
我上個月才剛解決一台相同的問題, 雖然您不一定可以適用, 不過還是可以嘗試看看:
  1. 先在有問題的那台 DC 上面, 找找看您的 SYSVOL 放在哪裡? 通常應該是 C:\WINNT\SYSVOL, 不過我查修的那台偏偏就跑到 D:\ 去.
  2. 請到 SYSVOL\domain 這個目錄底下, 新增一個資料夾, 名稱是: NTFRS_CMD_FILE_MOVE_ROOT
  3. 打開 Regedit 找到: \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NtFrs\Parameters\Backup/Restore\Process at Startup 裡面有個機碼叫: BurFlags, 請將這個機碼值改成 D4
  4. 重新啟動 FRS 服務
  5. 等待一段時間, 或是檢查事件檢視器裡面的「複寫服務」紀錄 (您可能要不斷按 更新內容), 看看是否會出現新的 FRS 的訊息? 第一條 FRS Log 會告訴您目前正在進行處理, 第二條或第三條應該告訴你 FRS 已經準備妥當, 可以開始複寫.
如果您可以在事件檢視器中, 看到 FRS 恢復正常的訊息, 系統應該就可以正常複寫的.
(但此法僅能適應特定環境, 不見得可以用在您的環境中.)
參考來源
事件識別碼: 13508




2019年1月16日 星期三

MKLINK - 因為符號連結的類型已停用,所以無法遵循符號連結。

事情是這樣的

環境:
FILE SERVER1
FILE SERVER2
CLINET SERVER

由於FILE SERVER空間快滿了,而且機器已經無法再擴充空間,於是想到可以透過mklink方式把一些不常用的檔案搬移到FILE SERVER2上。

於是在FILE SERVER1 建立好mklink
# mklink /d D:\XXXX  \\FILE SERVER2\XXXX

正當我興高采烈的時候,透過CLIENT去存取卻發生下列錯誤:

因為符號連結的類型已停用,所以無法遵循符號連結。
後來查了一下,必須要在CLIENT端去開啟遠端至遠端存取的權限。
一開始爬文章沒有注意的我,一直在FILE SERVER那邊測試了老半天。XD

查詢的指令
fsutil behavior query SymlinkEvaluation
開啟遠端至遠端的指令
fsutil behavior set SymlinkEvaluation R2R:1

參考來源:
 windows mklink指示用法
The symbolic link cannot be followed because its type is disabled


Edge Preview window opens and hangs up

近日有許多人反映 透過Edge 點選列印之後,預覽列印視窗會不停的轉圈圈,導致無法列印,非常困擾。 透過Google大神爬了一下,發現有許多鄉民都有此問題,試過之後都無法解決(有停用DLP、關閉UAC、重設瀏覽器、重設使用者(X)),大概就只差沒重新安裝作業系統了。 還有鄉民說 ...