XML 파일을 파워셸에 저장하려면 완전한 경로가 필요합니다. 왜죠?
파워셸의 XML 기능을 사용하여 .config 파일을 수정하고 있습니다.XML 문서를 호출합니다.전체 경로 이름을 입력하지 않는 한 저장은 효과가 없습니다.
# Open the xml file
$config = [xml](get-content web.config)
#
# modify the XML
$config.SelectNodes("./configuration/connectionStrings/add[@name='LocalSqlServer']") | % { $connNode = $_ }
$connNode.connectionString = $connNode.connectionString -replace '^(.*)Server=[^;]+(.*)$', '$1Server=192.168.5.2$2'
#
#
# Now I save it again
#
# This doesn't save it!
$config.Save("web.config");
# However, this works
$config.Save("{0}\\web.config" -f (get-location));
왜 $config가 안되나요?저장("web.config") 작업?
로컬 디렉토리가 아닌 다른 곳에 저장하게 된 건가요?
그 이유는 현재 powershell의 working 디렉토리가 process working 디렉토리와 동일하지 않기 때문입니다.
파워셸 작업 방향(Get-Location
)에서는 레지스트리 또는 인증서와 같은 다양한 파일 시스템 공급자를 사용할 수 있습니다.또한 파워셸은 여러 개의 실행 공간을 가질 수 있기 때문에 각각의 현재 작업 디렉토리를 가질 수 있습니다.
여기에는 두 가지 해결책이 있습니다.
하나는 사용하는 것입니다.Resolve-Path
(Resolve-Path "orders.xml")
, 값을 반환하기 전에 존재 여부를 확인하므로 새 파일을 생성할 경우 이 문제가 발생할 수 있습니다.다른 옵션은 get-location의 별칭을 사용하는 것입니다.$pwd
예를 들어.("$pwd\orders.xml")
예를 들어 2번 선을 다음과 같이 변경할 수 있습니다.
$config = [xml](get-content (Resolve-Path "web.config"))
아니면
$config = [xml](get-content "$pwd\web.config")
그리고 각각 12번 행이 될 것입니다.
$config.Save((Resolve-Path "web.config"));
아니면
$config.Save("$pwd\web.config");
만약 현재 작업 디렉토리에 들어가지 않았다면 $home을 확인했을 것입니다.
언급URL : https://stackoverflow.com/questions/4822575/saving-an-xml-file-in-powershell-requires-complete-path-why
'programing' 카테고리의 다른 글
안드로이드 토스트가 토스트보다 더 길 수 있습니까?LEGTH_LONG? (0) | 2023.09.25 |
---|---|
Mysql: 루틴 오류로 인해 사용자 ''@'localhost''에 대해 명령 실행이 거부되었습니다. (0) | 2023.09.25 |
브라우저에서 자바스크립트로 이미지를 압축하는 방법은? (0) | 2023.09.25 |
Python mySQL Update, 작동 중이지만 테이블 업데이트는 안 함 (0) | 2023.09.25 |
저장 프로시저 두 번 이상 MySQL 업데이트 (0) | 2023.09.25 |