2011-04-14 60 views
3

我使用的公司爲所有管理員級別帳戶使用$符號進行前綴操作。麻煩,我知道。Powershell - 嘗試對類似變量名稱的字符串進行測試路徑

我試圖用test-path,看是否存在像這樣的文件夾:

$username = read-host "Enter Login ID:" 

I型$adminsdb入禁區,點擊OK

##### Find TS Profile ##### 
$TSProfile_exist = test-path "\\server\tsprofiles$\$username" 

確實存在該文件夾,但.. $TSProfile_exist即將發生虛假

如何在用戶名中處理$?我正在構建此應用程序,以便爲環境中的用戶提供快速統計信息。我們也有以#號爲前綴的服務帳戶。

回答

4

處理在PowerShell中的特殊caracters的方法是使用`(反引號)

$TSProfile_exist = test-path "\\server\tsprofiles$\$username" 

成爲

$TSProfile_exist = test-path "\\server\tsprofiles`$\$username" 

小心Test-Path一招,就是它的語義不該目錄存在,但該目錄是可讀的。換句話說,如果您無法訪問您測試的目錄,即使目錄存在,您也會收到falseSee this other entry

+0

那麼,有沒有一種方法來測試一個路徑,而不必一一列舉整個目錄樹和-match操作搜索? – user708516 2011-04-18 15:37:35

+0

你可以使用'Get-ChildItem -Path從哪裏開始搜索-Include「Searched.File」-Recurse' – JPBlanc 2011-04-18 18:42:22

+0

這還需要很長的等待時間,而目錄列出...有沒有什麼測試路徑像這比獲得孩子快嗎? – user708516 2011-04-18 21:45:00

3

另一種選擇是使用單引號字符串;在這種情況下,powershell不會擴展變量。

test-path '\\server\path\$username' 

-Oisin

相關問題