AD GPO 隱藏討人厭的搜尋方塊和沒用的摳他那(cortana)

Windows 搜尋功能自古以來按下 win-key 直接打字就有,不過麻瓜們都不知道,所以在最近這幾版的 Windows 10 改成預設就是個大搜尋框,超礙事的,直接拿掉怕麻瓜們不方便,留個放大鏡圖示好了,至於 Cortana 就根本是沒用的東西,直接拿掉。

老樣子,打開 gpmc.msc 編輯你要改的 GPO 找到 使用者設定 / 喜好設定 / Windows 設定 / 登錄
記得這邊不要用”電腦設定”,要用”使用者設定

新增登錄
搜尋方塊是
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Search\SearchboxTaskbarMode
值設定為 1 ( 0隱藏 / 1圖示 / 2 整個方框 )

Cortana 圖示是
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowCortanaButton
設定值為 0 ( 0隱藏 / 1 顯示)

這樣乾淨多了(菸~

在 AD 環境中 Firefox 的群組原則管理

要在 AD 環境中透過群組原則 (GPO) 來管理 Firefox 可以從 https://github.com/mozilla/policy-templates/releases 下載群組原則樣板 (ex: policy_templates_v2.4.zip)。

解開來裡面找到兩個檔案

  • nwindows\firefox.admx 這是群組原則樣板檔
  • windows\zh-TW\firefox.adml 這是樣板的中文語言檔

admx 檔和之前做 chorme / new edge 的 adm 檔操作方式不同,
admx 檔是放在本機,然後操作群組原則的時候會自動抓來用,但是你換到沒有admx 的電腦操作就看不到哩,但是群組原則效果還在。
adm 檔則是掛進去到處都看得到。

firefox.admx 複製到本機(要執行 gpmc.msc 的機器)的 C:\Windows\PolicyDefinitions\ 底下(此範例以 windows 10 為例,如果是 windows 版本較舊,像是 windows7, server 2012 則資料夾可能不同)

firefox.adml 語言檔則放在 C:\Windows\PolicyDefinitions\zh-TW\ 底下。
以上兩個檔案 (addx/adml) 放好了就完成環境準備了,這時候執行 gpmc.msc 開或是新開你要的群組原則來編輯,就可以看到在系統管理範本內有 firefox 的選項了,admx 檔案會直接出現,不會像 adm 檔出現在傳統系統管理範本的分類。

自動安裝擴充元件

本範例以 uBlock Origin 為例,先到擴充套件的官網,找到網址的識別名稱,這邊是 “ublock-origin” 先把這字串記起來,下個步驟會用到。

打開群組原則編輯器,找到 電腦設定\原則\系統管理範本\Firefox\擴充套件\要安裝的擴充套件 啟用他,然後按下 “顯示…” 的按鈕,編輯要安裝的檔案來源列表。

注意! 這邊的值要直接可以找到要安裝的 xpi 檔,如果你去複製官網的按鈕連結,你會得到的是 https://addons.mozilla.org/firefox/downloads/file/3663488/ublock_origin-1.30.6-an+fx.xpi

這其實不 OK! 因為這路徑有限定版本,以後官網更新不就會裝到舊版….

所以這路徑不能直接複製官網按鈕,不過還好官網有作對應,我們只要用 https://addons.mozilla.org/firefox/downloads/latest/<擴充元件識別名稱>/latest.xpi 就可以直接對應到最新版本,範例如下:

擴充套件網頁 https://addons.mozilla.org/zh-TW/firefox/addon/ublock-origin/
擴充套件最新版本檔案 https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi

我們就直接把下面這行貼到值裡面,按下確定就好了。

關閉新通知

打開群組原則編輯器,找到 電腦設定\原則\系統管理範本\Firefox\權限\通知\封鎖傳送通知的新請求 把它啟用就好了。

讀者可能會想,上面不是有個封鎖的網站,為何不打開來填個萬用字元* 就好了嗎?
這其實不行,以目前版本 2.4 版官網說明 有提到

> Because these are origins, not domains, entries with unique ports must be specified separately. This explicitly means that it is not possible to add wildcards.

所以是不能用萬用字元的。

範例就這兩個,其他就不贅述了,祝各位躺的愉快。

AD 環境下把新版 Edge 搞得跟 Chrome 一樣(欸 不是)

新版 Edge 本來就是被 MS 改醜改難用而且無法登入 Google 同步的 Chrome 啊啊
雖然教了同事改預設瀏覽器,但是懶麻瓜眾多,就是有人會直接使用,只好把這改得稍微能用
承接昨天的廢文 在 AD 環境中 Google Chrome 的管理 ,這次我們要換用 Edge 的政策範本 來處理

首先先到 這裡 下載 Policy Files ,如果是禁止符號表示你的版本和平台沒有選定,請依照您的環境選定版本。
下載是一個 MicrosoftEdgePolicyTemplates.cab 的檔案,打開會有個 MicrosoftEdgePolicyTemplates.zip

然後一樣打開群組原則編輯設定 ( gpmc.msc ) 建立新的群組原則連結到你要部署的組織,然後在群組原則的 系統管理範本 右鍵新增範本,把 msedge.adm 抓進來
另外一提,如果您不是 AD 環境,也想要改掉新分頁的鬼 bing 可以用 本機群組原則編輯器(gpedit.msc) 處理

然後在傳統系統管理範本內就有 Edge 的範本了

接下來我們要改
* 設定 Microsoft Edge 為預設瀏覽器 – 關閉
* 設定新索引標籤頁面 URL – 改為 google 首頁
* 預設搜尋提供者搜尋 URL – 改為 google 搜尋
* 安裝擴充功能 – 安裝 ublock origin
* 預設通知設定 – 關閉

關閉檢查 Edge 為預設瀏覽器

Microsoft Edge / 設定 Microsoft Edge 為預設瀏覽器 : 已停用

設定新索引標籤頁面為 Google 首頁

如果沒有藉由群組原則改,由 Edge 設定介面怎麼找都改不掉新分頁的 bing 首頁

Microsoft Edge / 啟動、首頁和新索引標籤 / 設定新索引標籤頁面 URL : 啟用並設為 https://www.google.com

預設搜尋引擎改為 Google

bing 真的難用,預設搜尋當然是要 Google

Microsoft Edge / 預設搜尋提供者 / 啟用預設搜尋提供者 這個要先啟用才有效
接這設定搜尋 URL
Microsoft Edge / 預設搜尋提供者 / 預設搜尋提供者搜尋 URL 啟用 並把右方說明的 google 區塊貼過來,前後的單引號不用

{google:baseURL}search?q={searchTerms}&{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchFieldtrialParameter}{google:searchClient}{google:sourceId}ie={inputEncoding}

安裝擴充元件 – 以 ublock origin 為例

新版 Edge 的擴充元件要來 https://microsoftedge.microsoft.com/addons/Microsoft-Edge-Extensions-Home 找

找到後把網址的 id 複製起來

Microsoft Edge / 擴充功能 / 控制哪些擴充功能會默默地安裝
啟用並點擊 選項 / 顯示 把剛複製的 id 放在這邊
另外一提,新版 Edge 是可以安裝 Google Chrome 商店的擴充元件,也就是說你把 Chrome 擴充元件的 id 貼過來他也會安裝
像是本範例的 ublock origin 兩邊都有,你如果把兩邊的 id 都貼過來,他會裝兩套 ublock origin………

關閉通知

瀏覽器通知這個鬼東西真的很討厭,麻瓜們沒事就會中招,超煩

Microsoft Edge / 內容設定 / 預設通知設定 : 啟用並設定為 2. 不允許任何網站顯示桌面通知

在 AD 環境中 Google Chrome 的管理

要在 AD 環境中使用群組原則管理 Chrome 要先到 官網 下載 Chrome 政策範本 policy_templates.zip

解壓縮後找到 windows\adm\zh-TW\chrome.adm

再打開 群組原則編輯器 (gpmc.msc) 到 系統管理範本 新增剛解壓縮出來的 chrome.adm 這個範本檔
就可以讓群組原則處理 Chrome 的設定

範例一 : 幫網域上的 Chrome 都裝上 uBlock Origin

這個擋廣告軟體 這超好用 也可以擋掉 youtube 剛開始播放時的廣告
首先先去 uBlock Origin 的官網 記住網址的後面代號

然後再群組原則管理裡面 對你想要改的組織設一個群組原則然後編輯它

找到 系統管理範本 / 傳統系統管理範本(ADM) / Google / Google Chrome / 擴充功能 / 設定強制安裝的應用程式和擴充功能清單

啟用它並由下方選項顯示編輯清單,裡面的值就打上上面複製來的 擴充功能 id (例如 cjpalhdlnbpafiamejdnhcphjbkeiagm )

按下確定後 所有符合此群組原則的電腦就會自動裝上你指定的擴充功能了

範例二 : 讓所有電腦的桌面通知都關閉

系統管理範本 / 傳統系統管理範本 / Google / Google Chrome / 內容設定 / 預設通知設定
把它停用

以後就不會莫名其妙亂跳通知了

[iPad管理] iOS 批次重新命名


[iPad管理] iOS 批次重新命名

當使用 Apple MDM 管理方案 (ASM + profile management) 管理 iPad,每當裝置重置,裝置名稱又會回到 “iPad” ,原本預期裝置名稱可以由 Server 端設定,重置後會自己抓回來,不過我沒有找到這個功能,以至於每次重置都要重新一台一台重設,相當麻煩。

這麼麻煩的事情,應該有人做自動化吧,在網路上逛了一圈,果不其然有人已經造好輪子了,因為這個版本是吃英文版的 apple configurator 2 所以就順手 fork 回來改成中文版匯出直接可用的版本


環境準備:


製作 CSV 檔案:

將數台 iPad 透過 USB hub 連接到 macOS 機器上並打開 AC2

rename device from AC2

如果你的裝置名稱還是預設,請先在 AC2 上面先把該重新命名的裝置做第一次命名,當然也可以從 iPad 上面直接設好名稱再接過來。

輸出資訊

全選(⌘+A),右鍵 輸出 / 資訊 …

選擇輸出資訊

輸出資訊至少要勾選 “名稱” 其他欄位隨意。

選擇儲存檔案名稱

選擇輸出CSV檔檔名,本範例以 ipad_b.csv 為檔名,檔案存放在與rename_ios_devices.py 相同的資料夾(如不同,執行時請自行加上路徑)。

csv 檔案內容

使用文字編輯器查看 ipad_b.csv 內容,第一行標題必須包含 UDID名稱 兩個欄位,如您的 CSV 標題為英文,請使用英文版本的程式或是將其內容改為中文名稱。


使用本程式批次重新命名:

打開 終端機.app 或是 iTerm2.app 切換工作目錄到 rename_ios_devices.py 與 ipad_b.csv 的資料夾。本範例以桌面為例

cd ~/Desktop

執行重新命名程式 (使用 ipad_b.csv 為其資料來源)

python rename_ios_devices.py ipad_b.csv

搞定收工

OpenSIPS 建置筆記

使用 opensips 建立一個 sip server 給內部使用

本文以 debian 9.5 為例 ( opensips v2.2)

安裝 mariadb 當資料庫

apt-get install mariadb-server
mysql_secure_installation

Enter current password for root (enter for none):
Set root password? [Y/n] y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y

安裝 opensips

apt-get install opensips opensips-mysql-module

設定

設定監聽 IP

vi /etc/opensips/opensips.cfg

修改監聽 ip 這邊不可以用 127.0.0.1 一定要用你的 ip
然後 alias 設定為 hostname

listen=udp:192.168.1.88:5060
alias=udp:sip.hsps.tp.edu.tw:5060

設定 domain 與資料庫

vi /etc/opensips/opensipsctlrc

SIP_DOMAIN=your.domain.name #設定你的domain
DBENGINE=MYSQL #使用 mysql/mariadb
DBHOST=localhost #資料庫主機
DBNAME=opensips  #資料庫名稱
DBRWUSER=opensips  #SQL帳號
DBRWPW="opensipsrw" #更改為你想設定的密碼

依照上面設定建立 sql 帳號與資料庫

opensipsdbctl create

MySQL password for root: 輸入 mysql root 密碼
Enter character set name: latin1
Install presence related tables? (y/n): y
fraud_detection emergency? (y/n): y

新增 SIP 帳密 (for client)

opensipsctl add 101 101
opensipsctl add 102 102

帳號資料會建立在 table opensips.subscriber

然後就可以通了

設定系統服務

設定開機自動啟動

 systemctl enable opensips

平常操作就

啟動 systemctl start opensips

重啟 systemctl restart opensips

查看狀態 systemctl status opensips

HP Win10 更新後出現 WDF VIOLATION 無法開機

WDF_VIOLATION
今天公司的 HP 桌機 Windows 10 更新重開之後就出現 WDF VIOLATION 錯誤

auto repair gg
然後重開自動進修復又失敗

這是因為更新與 HP 的鍵盤快速鍵驅動衝突
解決方法請在這個畫面按下面 “進階選項” 然後選 “疑難排解” / “進階選項” / “命令提示字元”

切換到你安裝 windows 的磁碟 以下以 C: 磁碟為例
依序打下列指令 把原本的驅動更改名稱使其不啟動

c:
cd windows\system32\drivers\
ren HpqKbFiltr.sys HpqKbFiltr.sys.old

重開機之後就 ok 了

XenServer 轉移至 Proxmox (PVE)

XenServer 轉移至 Proxmox (PVE)
本文亦可適用於 xcp-ng

準備工作

XenServer 匯出 xva

用 ssh 登入 xenserver

使用以下指令匯出 xva

xe vm-export vm={你的虛擬機器名稱} filename={匯出的檔名.xva}

( 可以用 xe vm-list 列出所有的 vm 名稱)

轉換映像檔

這個部份我是在 pve 上面做,所以先把 xva 檔丟過來或是用 nfs 之類的其他方式掛載

解壓縮 xva 檔

tar xf xen_vm.xva

解開會得到

  • 檔案 ova.xml
  • 資料夾 Ref:990 (數字不盡相同)

再用 xenmigrate.py 將資料夾 Ref:990 轉換為 raw image (以下以 vm_raw.img 為例)

注意 轉換成 raw 的時候會佔滿原本該虛擬硬碟原本分配的硬碟大小, 而非 thin 大小

python xenmigrate.py -c Ref:990 vm_raw.img

產生出的 vm_raw.img 即為 raw image

如果需 qcow2 檔案則可以用 qemu-img 轉換 (以下以輸出 vm.qcow2 為例)

 qemu-img convert -f raw -O qcow2 vm_raw.img vm.qcow2

建立虛擬機器

登入 pve web ui 建立一個虛擬機器

ex: id=101 disk=qcow2(32G)

虛擬機器不要開

ssh 進去 找到虛擬硬碟實際位置 (ex: /mnt/pve/NAS/images/101/vm-101-disk-1.qcow2)

本機儲存請找 /var/lib/vz/images/{vm-id}

把轉出來的 qcow2 覆蓋掉剛建立的 vm-101-disk-1.qcow2

mv -f vm.qcow2 /mnt/pve/NAS/images/101/vm-101-disk-1.qcow2

修改設定檔磁碟容量 /etc/pve/qemu-server/101.conf

#virtio0: RS_PVE_NFS:101/vm-101-disk-1.qcow2,size=32G
virtio0: RS_PVE_NFS:101/vm-101-disk-1.qcow2,size=250G

開機測試沒問題後,就可以把先前產生的 xva / img / ova / Ref 檔案砍一砍了

Ref:

  • https://pve.proxmox.com/wiki/Xenmigrate
  • https://github.com/derekjhyang/xenserver_to_xen

gitea 安裝筆記

gitea

安裝 mariadb

sudo apt-get install mariadb-server
sudo systemctl start mysqld
sudo mysql_secure_installation

如果已設密碼,但用無法登入 (MySQL Workbench / Sequel Pro)

mysql -u root -p
UPDATE mysql.user SET plugin = '' WHERE user = 'root' AND host = 'localhost';
FLUSH PRIVILEGES;

建立 gitea 資料庫

mysql -u root -p
CREATE DATABASE gitea` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;

建立使用者 gitea 並賦予 gitea 資料庫權限

mysql -u root -p
CREATE USER 'gitea'@'localhost' IDENTIFIED BY 'newpassword';
GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost';

安裝 gitea

使用一般 user 登入

mkdir gitea
cd gitea
wget -O gitea https://dl.gitea.io/gitea/1.3.2/gitea-1.3.2-linux-amd64
chmod +x gitea
./gitea web

測試 http://{your_ip}:3000

第一個註冊使用者為最高權限

安裝 nginx

sudo apt-get install nginx

在 /etc/nginx/sites-available 建立一個網站設定檔 gitea.conf

vi gitea.conf

server {
        listen 80;
        listen [::]:80;
        server_name your.host.name;

        root /var/www/html;
        index index.html;
        location / {
                proxy_pass http://127.0.0.1:3000;
        }

連結到啟動區 並移除預設網站 重新啟動 nginx

cd /etc/nginx/site-enable
sudo ln -s ../sites-available/gitea.conf gitea.conf
sudo rm default
sudo systemctl restart nginx

設置 https

安裝 certbot 並執行 certbot

sudo apt-get install python-certbot-nginx
sudo certbot --authenticator webroot --installer nginx

gitea 關閉註冊

cd gitea/custom/conf/
vi app.ini

DISABLE_REGISTRATION  = true

改為服務啟動

/etc/system/gitea.service

[Unit]
Description=Gitea
After=syslog.target
After=network.target

[Service]
Type=simple
User=alexw
WorkingDirectory=/home/your_id/gitea/
ExecStart=/home/your_id/gitea/gitea web
Restart=always
RestartSec=2s

[Install]
WantedBy=multi-user.target

啟動服務

sudo systemctl start gitea.service

設定開機自動啟動服務

sudo systemctl enable gitea.service

自建 microbit 網頁編輯器

微軟 makecode 的 micro:bit 網頁編輯器 是 opensource 的,我們可以從 github/Microsoft/pxt-microbit 這裡找到,
上面的安裝說明很清楚照著做應該都不會出什麼問題,不過人就是懶懶,
所以我們把流程都寫在這個 shell script 執行就裝好了

首先準備一台 debian
安裝好 sudo
# apt-get install -y sudo

並且設定 sudo 不問密碼
# visudo
%sudo ALL=(ALL:ALL) NOPASSWD:ALL

接著用一般 user 登入(以下以alexw為例)
新增一個檔案
vi install_microbit.sh

sudo apt-get install -y curl build-essential git
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get update
sudo apt-get install -y nodejs
sudo npm install -g jake
sudo npm install -g typings
mkdir makecode
cd makecode
git clone https://github.com/microsoft/pxt
cd pxt
git checkout v0
npm install
typings install
jake
cd ../
git clone https://github.com/microsoft/pxt-microbit
cd pxt-microbit
sudo npm install -g pxt
npm install
sudo npm link ../pxt

賦予執行權限
chmod u+x install_microbit.sh

執行這個 script
./install_microbit.sh

跑一陣子後應該就裝好了
然後我們需要他開機自動執行,所以得放一個 service 在 systemd 那邊
注意 這邊有路徑 請依照你自己的帳號編輯路徑(有兩行喔)

編輯服務檔
sudo vi /etc/systemd/system/microbit.service

[Unit]
Description=microbit

[Service]
Environment=HOME=/home/alexw
Type=simple
WorkingDirectory=/home/alexw/makecode/pxt-microbit
ExecStart=/usr/bin/pxt serve --cloud --hostname 0.0.0.0 --port 80

[Install]
WantedBy=multi-user.target

然後我們就可以用 systemctl 去控制

先測試一下啟動服務
sudo systemctl start microbit.service
第一次會跑個一兩分鐘左右
可以用 sudo systemctl status microbit.service 看一下有沒有錯誤

沒問題就設定開機自動啟動
sudo systemctl enable microbit.service

搞定收工