2012-02-21 2 views
0

작은 배경 ...
저는 Windows XP, Vista 및 7을 자주 사용합니다. 따라서 필자는 각 PC의 %appdata% 폴더에서 계속 내 프로그램 설정을 다음으로 이동해야합니다. 필자는 PowerShell 스크립트를 만들어이 작업을 수행하고 완료 한 후에 폴더를 제거하는 것이 내 문제를 덜어 줄 것이라고 생각했습니다. 나는 일반적으로 플래시 드라이브에 대한 작업을하고 있기 때문에 상대 경로를 사용하기를 바랬지 만 문제가되는 것 같지만 가장 큰 문제는 Powershell이 ​​어떤 실수를했는지 충분히 이해하지 못하는 것입니다. 나는 그것을 만들고 고칠 방법을 만들고있다. 그래서 나는 여기에왔다.

두 개의 스크립트로 작업을 구분할 수 있다고 생각했습니다. 하나는 디렉토리를 배치하기위한 것이고 다른 하나는 원래의 폴더에 다시 복사하고 뒤에있는 모든 추적을 제거하기위한 것입니다. 나는 지금까지 내가 원하는 것을 보여줄 것이다. 나는 그들을 찾기가 더 어려울지도 모른다고 생각해서 거기에서 시작했다. 여기 내가 지금까지 가지고있는 것이있다. txt 파일을 사용하여 원하는 폴더 목록을 쉽게 업데이트 할 수 있으므로 전송 대상이되므로 변수에 의해 대상이 지정됩니다.PowerShell : 디렉터리 검색 및 구문 오류

$fldrtxt = Get-Content .\FolderList.txt 
$dirget = -LiteralPath ="'%appdata%'\$_fldertxt" 
$dirpost = "./Current" 
# get-command | Add-Content .\"$today"_CommandList.txt 
Set-Location c: {get-content $_dirget} | %{ copy-item $_dirpost} 

실행 유틸리티를 사용할 때 사용하는 명령과 동일한 명령을 PowerShell에서 인식하지 못합니다. 내가 %appdata%을 사용하여 어디에서 가져온 폴더를 참조 할 수 있는지 확신 할 수 있기 때문에 내가 원하는 것을이 스크립트에서 어떻게 작성할 수 있습니까? 세 컴퓨터 모두에 별도의 스크립트를 사용해야하므로 절대 경로를 사용할 수 있습니다. 그리고 나는 그것을 원하지 않는다.

PowerShell을 사용하여 원하는 작업을 수행하고 사용할 폴더를 어떻게 타겟팅합니까?

+0

, 변수 네이밍은 PowerShell의 세계에서 혼란 스럽습니다. $ _dirget과 같은 변수는 많은 cmdlet이 "현재 파이프 라인에있는 개체"를 의미하는 특수 변수 $ _를 제공하기 때문에 이상하게 보입니다. 따라서 다음과 같은 것을 볼 수 있습니다 : get-process | foreach-object {$ _. PM/1KB} ... 이걸 감안할 때 $ _PM이라고 명명하는 것은 좋지 않은 아이디어입니다. –

+0

구문 연습을 바꿀 것입니다. 머리를 가져 주셔서 감사합니다. –

답변

1

첫째 : PowerShell 용 나는 폴더가 걸릴 원하는 어디 참조 할 % APPDATA % 사용할 수 있습니다 확신 때문에 환경

너무

잘못된 구문 Accerss, 환경 변수에 대한 %var% 구문은 cmd 스크립트에 고유하며 (MS-DOS 배치 파일에서 전달됩니다)

환경 변수에 액세스하는 PowerShell에서 env:이라는 이름 앞에 접두사를 사용하므로 $env:AppData입니다.

$_dirget = "$env:AppData\$_fldertxt" 

둘째, 매개 변수 전달

변수에 매개 변수 이름을 포함하지 마십시오 cmdlet으로 전달 된 변수는 인수하지 않는 매개 변수의 이름으로 전달됩니다. 당신은 필요

get-content -LiteralPath $_dirget 

(.이 뭔가를 호출하면 해시 테이블로 변수 이름 인수 쌍의 해시 테이블을 사용 할 수 있습니다 "플랫"입니다,하지만 여기에 불필요) 일반 주석으로

+0

실제로 $ env 변수를 사용하는 환경 변수는 하위 표현식에 포함시키지 않고 완전히 확장 할 수 있습니다. "$ env : AppData \ $ _ fldertxt" –

+0

@ShayLevy 그래서 ... 내가 어디에서 얻었는지 궁금합니다. 하위 표현이 필요하다는 걸 내 마음에 집어 넣었습니까? 답변을 업데이트합니다. – Richard

+0

나는 그것을 할 필요가 있을지 모른다고 생각했지만 정확히 어떻게 확신 할 수 없었습니다. 나는 이것을 시험해보고 그것이 어떻게되는지 보게 될 것이다. 당신의 도움을 주셔서 감사합니다. –

관련 문제