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로 : 비슷하게 AD로 설정하지 않으면 Test-Path를 사용할 수 없습니다. 왜 이런 일이 일어 났는지 설명 할 수 있습니까? 그리고 내 위치를 끊임없이 설정하고 따로 할 수있는 것은 무엇입니까? 둘 사이에?

감사합니다.

당신이 (당신이 그것의가 UNC 이후 안) 경로에 명시 적 드라이브가없는 경우

+0

하나의 문제는 당신이 문자열을 만들 때 문자열에서 $ 탈출 또는 그 대신 큰 따옴표 작은 따옴표를 사용할 필요가 그 중 하나입니다. – EBGreen

+0

나요? 공유 이름에 $ 문자를 사용하는 공유를 처리 중이며 이제는 작은 따옴표 나 큰 따옴표로 작업하는 것 같습니다. 현재 위치가 네트워크 드라이브 나 로컬 드라이브로 설정되어있는 한, 네트워크 리소스가 작성된대로 해당 리소스에 도달 할 수 있습니다. 현재 디렉토리가 AD 일 때만 실패합니다. 모범 사례는 실제로 작동하는지 여부에 관계없이 제대로 구축해야하므로 조언을 얻습니다. (ㅎ!) – AtomicReaction

답변

2

(파일 경로에 작은 따옴표에 따옴표를 변경하려면 편집), PowerShell을 가정한다 그것은 그 현재 PSDrive/PSProvider의 경로입니다. 지정하려면 경로 앞에 filesystem:: 접두어를 붙입니다. 이처럼

: 바로 박쥐 볼 수 있습니다

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

고마워! 이것이 내가 Test-Path를 작동시킬 수없는 이유를 설명해줍니다. 여전히 Get-ADUser가 AD에 없을 때 -server 매개 변수를 수락하지 않는 이유가 궁금합니다. 그러나 적어도이 작업을 수행 할 수있는 지점까지 해결합니다. – AtomicReaction