2013-07-31 2 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: Точно так же я не могу заставить Test-Path работать, если я не настроен на 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

Смежные вопросы