2012-11-02 2 views
3

레지스트리 키 세트를 업데이트하려고합니다. 속성 값을 이전 값을 기반으로 새 값으로 업데이트해야합니다.powershell을 사용하여 레지스트리 항목 값을 검색하고 바꿉니다.

나는 다음과 같은 사용하여 시도 :

Get-ItemProperty -Path HKCU:\Software\xxxxx\*.mydomain.com Uri 
     | set-itemproperty -Path { $_.PSPath } Uri -Value { $_.Value -Replace ".mydomain.com/", ".mynewdomain.com/" } 

을하지만 그에게 URI 속성 값을 설정합니다 { $_.Value -Replace ".mydomain.com/", ".mynewdomain.com/" }

내가 시도 :

Get-ItemProperty -Path HKCU:\Software\xxxxx\*.mydomain.com Uri 
     | set-itemproperty -Path { $_.PSPath } Uri -Value ${ $_.Value -Replace ".mydomain.com/", ".mynewdomain.com/" } 

그리고

Get-ItemProperty -Path HKCU:\Software\xxxxx\*.mydomain.com Uri 
     | set-itemproperty -Path { $_.PSPath } Uri -Value ($_.Value -Replace ".mydomain.com/", ".mynewdomain.com/") 

하지만 값이 지워집니다.

가능한 한 적은 수의 줄로 여러 키의 여러 레지스트리 값을 업데이트하려고합니다. 레지스트리를 내보내고 검색하고 바꾸기 위해 메모장을 사용하여 레지스트리 항목을 다시 가져와 작업을 벌써 끝냈습니다. 그러나 그것은 부정 행위처럼 느껴졌습니다. 나는 Powershell을 사용하여 이것을 어떻게 달성 할 수 있는지 정말로 알고 싶다.

다른 시도 : $(...), (...), -Value 옵션을 생략하면 이름이 S입니다.

$_.Value$_.Uri$_으로 바꾸려고했으나 작동하지 않았습니다.

문제가 해결되어 how to update your TFS project collection settings for the new Team Foundation Services에 대한 안내를 제공합니다.

+1

시도 변화''{}에서 '()'에 대한 '-Value' 값 .. –

+0

@Christian는 않는다는 주사위를 시도하지 않는다. 값을 "" " – jessehouwing

+1

및 $ _. Value.Replace (".mydomain.com ",".mynewdomain.com ")로 설정 하시겠습니까? –

답변

3
Get-ItemProperty -Path HKCU:\Software\xxxxx\*.mydomain.com Uri | %{set-itemproperty -Path $_.PSPath Uri -Value ($_.Uri -Replace ".mydomain.com/", ".mynewdomain.com/")} 
+0

고마워! 그것은 트릭을했기 때문에 % {...}이 실행 전에 내용을 평가한다고 가정합니다. – jessehouwing

+2

아니요, foreach를 의미하고 Get-ItemProperty는 속성 목록을 파이프 할 수 있습니다. foreach를 사용하여 각 항목을 개별적으로 조작 할 수 있습니다. $ _rereasent 각 파이프 라인 항목, 당신은 $ _. 값보다는 값을 가져 오기 위해 $ _. Uri를 사용해야합니다. 그냥 Get-ItemProperty -Path HKCU : \ Software \ xxxxx \ *를 입력하면됩니다. mydomain.com Uri | fl 키와 값을 봅니다. – Jackie

관련 문제