긴 시간 lurker, 처음 포스터. 나는 여기 누군가가 나를 곤란하게 만든 문제를 알아 내려고 노력하고 있기를 바라고있다. 본질적으로 원격 서버에 다중 부분 SQL Server 데이터베이스를 복원하는 Powershell 스크립트를 작성하려고합니다. 변수와 매개 변수를 사용하는 방법을 이해하는 시점에서 invoke-command
및 script-block
기능을 사용하고 있습니다. 그러나 매우 흥미로운 동작을 발견했습니다. 내 스크립트 블록에 동일한 경로를 하드 코딩하는 경우, 작동, 그러나Powershell 및 스크립트 블록을 사용하여 원격 Microsoft SQL Server 데이터베이스 복원
System.Data.SqlClient.SqlError: Cannot open backup device 'S:\Landing\testdb1.bak,S:\Landing\testdb2.bak'. Operating system error 123(The filename, directory name, or volume label syntax is incorrect.).
:
이이 같은 오류를 얻을 수cls
$strbaktest = "S:\Landing\testdb1.bak,S:\Landing\testdb2.bak"
echo "The backup files are $strbaktest"
write-host
$StrScrBlk = {param($StrBaktest); &Restore-SqlDatabase -ServerInstance "mydbserver" -Database testdb -BackupFile $strbaktest -ReplaceDatabase}
invoke-command -ComputerName mydbserver -ScriptBlock $StrScrBlk -argumentlist $strbaktest
: 여기
지금 내 코드입니다cls
$StrScrBlk = {Restore-SqlDatabase -ServerInstance "mydbserver" -Database testdb -BackupFile S:\Landing\testdb1.bak,S:\Landing\testdb2.bak -ReplaceDatabase}
invoke-command -ComputerName mydbserver -ScriptBlock $StrScrBlk
내가 알아챈 또 다른 흥미로운 점은 복원 할 단일 파일 만있는 경우 처음 만났을 때 변수가있는 hod가 작동합니다.
cls
$strbaktest = "S:\Landing\testdb.bak"
echo "The backup files are $strbaktest"
write-host
$StrScrBlk = {param($StrBaktest); &Restore-SqlDatabase -ServerInstance "mydbserver" -Database testdb -BackupFile $strbaktest -ReplaceDatabase}
invoke-command -ComputerName mydbserver -ScriptBlock $StrScrBlk -argumentlist $strbaktest
희망적으로 이것은 누군가에게 의미가 있습니다. 나는 이것을 작동시키기 위해 여러 가지 방법을 시도하면서 몇 시간을 보냈습니다. 그러나 그것을 이해하는 것처럼 보이지는 않습니다. 도움이나 조언을 주시면 감사하겠습니다.
감사합니다.
이봐, 덕분에 나에게 다시 얻기를 위해 - 나는 그것을 감사드립니다. 나는 당신의 제안을 시도했다. 그러나 그것은 파일 경로에서 쉼표를 완전히 제거한다. 나는 거기에 있기 위해 쉼표가 필요하다. –