Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 当共享路径包含'$';符号_Powershell_Remote Server_Shared Directory_Copy Item - Fatal编程技术网

Powershell 当共享路径包含'$';符号

Powershell 当共享路径包含'$';符号,powershell,remote-server,shared-directory,copy-item,Powershell,Remote Server,Shared Directory,Copy Item,我手上有3台远程服务器。假设服务器X、服务器Y和服务器Z。我正在本地计算机上运行powershell脚本以登录到远程服务器X。此服务器X是我的基本服务器,可以访问其他2台服务器。我想使用此服务器X作为基本服务器,并想将文件从服务器Y复制到服务器Z,但由于访问权限的原因,无法通过本地计算机进行复制。因此,我使用管理员凭据登录到服务器X,该凭据可以访问所有3台服务器。登录后,我只提到复制项命令,该命令用于将文件从服务器Y的共享路径复制到服务器Z的共享路径 这是一个类似的问题,许多人在这个网站这里去扭

我手上有3台远程服务器。假设服务器X、服务器Y和服务器Z。我正在本地计算机上运行powershell脚本以登录到远程服务器X。此服务器X是我的基本服务器,可以访问其他2台服务器。我想使用此服务器X作为基本服务器,并想将文件从服务器Y复制到服务器Z,但由于访问权限的原因,无法通过本地计算机进行复制。因此,我使用管理员凭据登录到服务器X,该凭据可以访问所有3台服务器。登录后,我只提到复制项命令,该命令用于将文件从服务器Y的共享路径复制到服务器Z的共享路径

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

下面是我的代码:

 #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
第一个想法:将
替换为
。这样,powershell就不会掉到$-符号上。您现在编写它的方式是:“嘿,powershell,继续查找名为$E的变量并将其放在那里。”

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

如前所述,您可以将双QOUTE更改为单QOUTE。通过这样做,您可以对powershell说,两者之间的所有内容都是一个没有变量的字符串

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

但是如果路径中有一个带$符号的字符串和一个变量,该怎么办呢。类似这样的东西
$cmd=“sc config something$$variable dependent=something/something.

我需要第一个美元符号,因为它在服务的名称中,但它是变量

$cmd = "sc config something#$variable depend= something/something"
$cmd = $cmd -replace "#", '$'
通过这样做,powershell将填充变量,因此我有了
$cmd=“sc config something”#value dependent=something/something“


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

就像前面提到的那样,您可以将双qoutes更改为单qoutes。这样,您就可以对powershell说,两个qoutes之间的所有内容都是一个没有变量的字符串

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

但是,如果路径中有一个带$sign的字符串和一个varriable,那么会怎么样呢?类似这样的
$cmd=“sc config something$$variable dependent=something/something.

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

$cmd = "sc config something#$variable depend= something/something"
$cmd = $cmd -replace "#", '$'
通过这样做,powershell将填充变量,因此我有了
$cmd=“sc config something”#value dependent=something/something“


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

你是说
$E
还是
E$
?前者是一个变量,后者是管理份额。完全不同,对不起。我的错误。是E$你是说
$E
还是
E$
?前者是一个变量,后者是管理份额。完全不同,对不起。我的错误。是E$嗨。谢谢你的回复。这是我的错误。是E$。不是E美元,我试着替换报价。当我直接在服务器X中运行命令时,它会工作。但是当我从本地计算机运行脚本时。它正在抛出“拒绝访问”错误,因为以下内容拒绝访问+类别信息:PermissionDenied:(\\ServerX…TestFile.txt:String)[复制项]、UnauthorizedAccessException+FullyQualifiedErrorId:ItemExistsUnauthorizedAccessError,Microsoft.PowerShell.Commands.CopyItemCommand+PSComputerName:ServerX找不到路径“\\ServerX\SourceTestFolder\TestFile.txt”,因为它不存在。+CategoryInfo:ObjectNotFound:(\\ServerX…TestFile.txt:String)[复制项目],ItemNotFoundException+FullyQualifiedErrorId:PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand+PSComputerName:ServerX如何从本地计算机调用脚本?您好。谢谢你的回复。这是我的错误。是E$。不是E美元,我试着替换报价。当我直接在服务器X中运行命令时,它会工作。但是当我从本地计算机运行脚本时。它正在抛出“拒绝访问”错误,因为以下内容拒绝访问+类别信息:PermissionDenied:(\\ServerX…TestFile.txt:String)[复制项]、UnauthorizedAccessException+FullyQualifiedErrorId:ItemExistsUnauthorizedAccessError,Microsoft.PowerShell.Commands.CopyItemCommand+PSComputerName:ServerX找不到路径“\\ServerX\SourceTestFolder\TestFile.txt”,因为它不存在。+CategoryInfo:ObjectNotFound:(\\ServerX…TestFile.txt:String)[复制项目],ItemNotFoundException+FullyQualifiedErrorId:PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand+PSComputerName:ServerX如何从本地计算机调用脚本?您好。谢谢你的回复。这是我的错