2014-05-20 4 views
2

'IF'나 '* .BAT'이전을 대체하기 위해 로그온 스크립트를 쓰고 있어요

(나는 네 생각).

데스크톱에서 특정 디렉토리를 '생성/삭제'하기 전에 사용자 프로필 조건을 테스트하려고합니다.

EX.

If(($env:userprofile = "rmullins")) 
    { 
     Remove-Item $env:userprofile\Desktop\ITFILES -Recurse -Force 
    } 

그래서 나는 세드릭보고 다음 실행

md -Path $env:userprofile\Desktop\ITFILES 

경로는 다음 위치에 생성됩니다 C : \ WINDOWS \ system32를 입력 .........

위의 MD 명령은 'IF'문을 실행하기 전에는 제대로 작동합니다. $ env : userprofile이 어떻게 작동하는지 이해하지 못할 수도 있습니다.

아이디어가 있으십니까? 윈도우 7에

+0

는'='대입 연산자가 아닌 비교 연산자 ... –

+2

입니다 경우의 ($ ENV : 사용자 이름 -eq "rmullins")' –

답변

5

:

[PS]> echo $ENV:UserProfile 
C:\Users\arco444 

이 프로파일 디렉토리의 경로를 반환합니다. 따라서 나는 조건을 실패 사용자 이름만을 찾고 기대하고 싶습니다. 내가 대신 간단한 일치 할 거라고 : 나는 당신이 '말은 생각

if ($env:userprofile -imatch "rmullins") 
{ 
    Remove-Item $env:userprofile\Desktop\ITFILES -Recurse -Force 
} 
+0

이것은 효과가있다! 정말 고맙습니다. '=='비교 연산자가 작동하지 않는 것들. 문제가 해결되었으므로 (($ env : userprofile = rmullins)) 실제로 수행중인 작업은 무엇입니까? 실제로 사용자 프로필을 변경합니까? 무슨 일이 벌어 지든, 'md % userprofile %/desktop'과 같은 명령을 실행하면 % userprofile % (백분율 및 모두)로 경로가 만들어집니다. ... 다시 도움을 청합니다. – banditFox

+1

@banditFox 할당 연산자는 특정 PowerShell 세션에서 $ env : userprofile 변수의 값을 변경한다는 것을 의미합니다 (다른 PowerShell 세션이나 다른 OS의 다른 세션에는 영향을주지 않습니다). '=='은 PowerShell에서 비교 연산자가 아닙니다. equals에 대한 PowerShell 비교 연산자는'-eq'입니다. PowerShell의 비교 연산자에 대해 더 배우려면 PowerShell 명령'Get-Help about_Comparison_Operators'를 실행하는 것이 좋습니다. –

+0

감사합니다. Robert. 많은 도움이됩니다! 나는 배울 것이 많다. – banditFox