2013-07-31 26 views
1

我遇到了一些我正在編寫的用於創建新Active Directory用戶的腳本的問題。在這一點上,我試圖測試一個預期的帳戶名是否已被使用,以及是否存在具有相同名稱的文件夾。下面是我使用的是什麼樣的一個例子:Powershell TestPath和GetADuser基於當前位置的問題

$UserNameToCheck = 'TTesterson' 

$SamTest = $null 
$SamTest = Get-ADUser -filter {samAccountName -eq $UserNameToCheck} -Server XX-DC.domain.ca 

$PathToTest = '\\FileServer\Users$\' + $UserNameToCheck 
$FolderTest = Test-Path $PathToTest 

if(($SamTest -eq $null) -and ($FolderTest -eq $false)) 
{#Set a flag here and do some stuff} 

這裏的問題,當我運行我的腳本,除非我設置我的當前位置,我不能針對特定服務器(-server參數)到AD:同樣,我不能得到測試路徑工作,除非我不設置在AD:任何人都能夠解釋爲什麼會發生這種情況,除了不斷設置我的位置和我可以做什麼兩者之間?

謝謝。

(編輯改雙引號來的文件路徑單引號)

+0

一個問題,我可以看到馬上蝙蝠是,你要麼需要逃避你的字符串中的$或者使用單引號代替雙引號當您生成的字符串。 – EBGreen

+0

是嗎?它正在處理一個使用共享名稱中的$字符的共享,並且現在似乎正在使用單引號或雙引號。只要我的當前位置設置爲網絡驅動器或本地驅動器,我可以在寫入網絡資源時點擊它。只有當我的當前目錄是AD時:它失敗了。 這就是說,最佳實踐可能會說,無論它是否正常工作,我都應該正確地構建它,這樣的建議! (heh!) – AtomicReaction

回答

2

如果你沒有在你的路徑明確的驅動器(因爲它是一個UNC你沒有),PowerShell的將假定它是當前PSDrive/PSProvider中的一條路徑。要指定,請在路徑前加上filesystem::

像這樣:

$PathToTest = 'filesystem::\\FileServer\Users$\' + $UserNameToCheck 
+0

謝謝!這就解釋了爲什麼我無法獲得Test-Path的工作。它仍然讓我想知道爲什麼Get-ADUser偶爾不能接受-server參數,當我不在AD中時,但它解決了它,直到我至少可以實現這一點。 – AtomicReaction