Powershell:與Batch讀取txt檔內容作為變數

如果你寫了很多Powershell或批次檔是放在Fileserver/ShareFolder給大家用,
那麼FileServer搬家對你來說肯定是個痛苦,因為如果當初你的路徑是寫死的,髂麼肯定是很痛苦的。

最早,我都是在Powershell/Batch檔頭做變數宣告,例如:

Dos command / Batch
%Srv_A% = \\1.2.3.4
%Srv_B% = \\5.6.7.8
Powershell
$Srv_A = \\1.2.3.4
$Srv_B = \\5.6.7.8

但是如果這類的Script越來越多,某一天Share Folder搬家的時候也是改得很痛苦。所以我就萌生了如何可以一次改好的方式。把路徑的變數放在某個TXT檔案,需要的時候去讀出來就好了。

下面是文字檔的部分,我自己命名為GlobalVar.txt

FSRV_A=\\1.2.3.4
FSRV_B=\\5.6.7.8

Dos Command / Batch讀取方式,在檔頭放這一行利用 %~dp0的方式來讀取同目錄的txt檔案

for /f "delims== tokens=1,2" %%G in (%~dp0GlobalVar.txt) do set %%G=%%H

Powershell讀取方式,在檔頭放這一行,利用$PSScriptRoot來讀取同目錄txt檔案。

Get-Content $PSScriptRoot\GlobalVar.txt | Foreach-Object{
   $var = $_.Split('=')
   New-Variable -Name $var[0] -Value $var[1]
}

如果你沒有把Script放的太多目錄,這樣應該可以減少你Share Folder搬家時的困擾。