首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当共享路径包含“$”符号时,如何使用powershell将文件从一个服务器复制到另一个服务器

当共享路径包含“$”符号时,如何使用powershell将文件从一个服务器复制到另一个服务器
EN

Stack Overflow用户
提问于 2016-03-17 08:50:00
回答 2查看 2.9K关注 0票数 0

我手里有3台远程服务器。让我们假设服务器X,服务器Y和服务器Z。我正在运行我的powershell脚本从我的本地机器登录到远程服务器X。这个服务器X是我的基本服务器,它可以访问其他两个服务器。我希望使用此服务器X作为基本服务器,并希望将文件从Server复制到server,这是由于访问权限而无法通过本地计算机进行的。因此,我使用管理凭据登录到Server,它可以访问所有3台服务器。登录后,我只是提到复制项命令将文件从服务器Y的共享路径复制到服务器Z的共享路径。

这是一个类似的问题,在这个网站,这里有一个转折。当我调试,它显示已完成,但我没有得到任何结果。因此,我尝试在Server中直接运行这个powershell脚本,它只包含复制项命令以及共享文件夹的源路径和目标路径。当我调试时,我得到的错误是,用户没有权限,或者找不到路径。当我试图使用相同的凭据从共享路径手动复制和粘贴文件时,它正在工作。但是通过powershell脚本,它现在开始工作了。我知道原因。这是因为共享路径中的符号'$‘。所以我需要解决这个问题。它不允许“$”符号出现在我的源路径和目标路径中。有什么别的办法吗?如果我试图删除该符号并复制文件,我会得到“拒绝访问”错误,因为它是一个共享路径,E驱动器应该以$符号作为前缀。

下面是我的代码:

代码语言:javascript
运行
复制
 #Calling my Server Name, Credentials from App.Config File 

$currentDirectory = [IO.Path]::GetDirectoryName($MyInvocation.MyCommand.Path)
 $appConfigFile = [IO.Path]::Combine($currentDirectory, 'App.config')
 $appConfig = New-Object XML
 $appConfig.Load($appConfigFile)

 $ServerName = $appConfig.configuration.appSettings.add[0].value
 $Username = $appConfig.configuration.appSettings.add[1].value
 $Password = ConvertTo-SecureString -String $appConfig.configuration.appSettings.add[2].value -AsPlainText -Force 

 $cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Username,$Password

使用凭据登录到服务器X,并将文件从服务器Y复制到服务器Z

代码语言:javascript
运行
复制
 Invoke-command -ComputerName $ServerName -Credential $cred -ScriptBlock { 

 Copy-Item "\\ServerY\E$\SourceTestFolder\Test.docx" "\\ServerZ\E$\DestTestFolder" }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-17 08:59:04

第一个想法:将"替换为'。所以powershell停止掉在$-符号上。您现在编写它的方式是:“嘿,powershell,继续寻找一个名为$E的变量,并将其放入其中”。

票数 2
EN

Stack Overflow用户

发布于 2016-03-17 09:42:04

和以前的会议一样,您可以将双qoutes更改为单qoutes。通过这样做,您可以告诉powershell,两者之间的所有内容都是一个没有变量的字符串。

您还可以使用替换和特殊符号,如本例所示。

但是,如果你有一个字符串,在道路上有一个$符号和一个战士。像这样的$cmd = "sc config something$$variable depend= something/something.

我需要第一个美元符号,因为它在服务的名称中,但是它是变量。我所做的是通过以下操作来修复它。

代码语言:javascript
运行
复制
$cmd = "sc config something#$variable depend= something/something"
$cmd = $cmd -replace "#", '$'

通过这样做,powershell填充了变量,所以我有了$cmd = "sc config something#value depend= something/something"

然后我用DollarSign替换#,我们就设置好了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36055544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档