powershell sqlserver上下文中的copy-item失败

时间:2016-10-04 17:25:57

标签: powershell

我有一个复杂的脚本在一个简单的行上失败了。 发生的事情是我执行

Backup-SqlDatabase -ServerInstance "DB01" -Database "DATABASE" -BackupFile "F:\FILE.BAK"
Copy-Item -Path \\remotedb01\f$\file.bak -Destination F:\Backups

回复给我的错误是  路径无效:' \\ remotedb01 \ f $ \ file.bak'

我通过测试发现它失败了,因为在backup-sqldatabase命令完成工作目录后

PS SQLSERVER:> 如果我输入c: 然后再次运行copy-item命令,它正常工作。

我必须遗漏一些痛苦明显的东西,但我没有看到它。 我宁愿在我的powershell中没有一行只是说C:,必须有更好的方法来实现这一点。

1 个答案:

答案 0 :(得分:1)

在我放弃并发出求救声后,我是否认为我找到了解决方案?

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/719ede23-9f1a-43f5-8c4e-8188fea0b19f/sql-server-2012-importmodule-sqlps-breaks-the-testpath-powershell-cmdlet?forum=sqlsmoanddmo

解决方案1:

Test-Path -path "\\server\directoryname"
Import-Module 'sqlps' –DisableNameChecking
test-path -path  Microsoft.PowerShell.Core\FileSystem::\\server\directoryname

解决方案2:

Test-Path -path "\\server\directoryname"
Import-Module 'sqlps' –DisableNameChecking
C:
Test-Path -path "\\server\directoryname"

只需将带有Copy-Item和Import-Module的Test-Path替换为Backup-SQLDatabase,解决方案就是匹配。

考虑到解决方案1意味着添加了十几个额外的字符,我将使用普通的C:作为修复。