Powershell cmd中哪个符号是转义字符?

Powershell cmd中哪个符号是转义字符?,powershell,command-line,cmd,Powershell,Command Line,Cmd,我有以下代码: powershell -command "& { (New-Object Net.WebClient).DownloadFile('linkToMyFile.file', 'C:\my.file') }" 用于下载文件。 当我在远程服务器上的cmd中执行它时,一切都正常。 但是,当我想使用paexec在远程服务器上的计算机上执行此代码时,我在转义字符方面遇到了一些问题。 我的命令中的命令: psexec.exe \\remoteServer.0.1 -u usernam

我有以下代码:

powershell -command "& { (New-Object Net.WebClient).DownloadFile('linkToMyFile.file', 'C:\my.file') }"
用于下载文件。
当我在远程服务器上的cmd中执行它时,一切都正常。
但是,当我想使用paexec在远程服务器上的计算机上执行此代码时,我在转义字符方面遇到了一些问题。
我的命令中的命令:

psexec.exe \\remoteServer.0.1 -u username -p password -dbg -lo D:\PsExec.log cmd /c "powershell -command "& { (New-Object Net.WebClient).DownloadFile('linkToMyFile.file', 'C:\my.file') }""
我尝试使用^symbol,但出现了相同的错误
使用双引号的^symbol进行编码:

psexec.exe \\remoteServer.0.1 -u username -p password -dbg -lo D:\PsExec.log cmd /c "powershell -command ^"& { (New-Object Net.WebClient).DownloadFile('linkToMyFile.file', 'C:\my.file') }^""
此外,我还尝试使用
\
(如PHP中的)进行转义,但结果相同。
请对此提供帮助或建议如何使用命令行远程下载文件。

不幸的是,CMD根据转义内容和转义位置使用。没有一个单独的转义字符可以在任何地方使用

在大多数情况下,下一个字符通过在其前面加上插入符号(
^
)进行转义,例如在
for/f
循环中:

for /f "tokens=1" %%a in ('type file.txt ^| find "something"') do ...
但有时通过将字符加倍来转义字符,例如批处理脚本中的百分比字符(
%
):

@echo off
echo %%DATE%%=%DATE%
有时您甚至需要输入其他转义字符(如反斜杠),因为您需要转义的不是CMD,而是字符串传递给的命令:

mountvol | findstr /r \\\\
但是,您的特定场景不需要额外的引号或转义。只需直接运行PowerShell命令行,无需
cmd/c

paexec.exe \\remoteServer.0.1 -u username -p password powershell -command "&{...}"
不幸的是,CMD的使用取决于转义的内容和转义的位置。没有一个单独的转义字符可以在任何地方使用

在大多数情况下,下一个字符通过在其前面加上插入符号(
^
)进行转义,例如在
for/f
循环中:

for /f "tokens=1" %%a in ('type file.txt ^| find "something"') do ...
但有时通过将字符加倍来转义字符,例如批处理脚本中的百分比字符(
%
):

@echo off
echo %%DATE%%=%DATE%
有时您甚至需要输入其他转义字符(如反斜杠),因为您需要转义的不是CMD,而是字符串传递给的命令:

mountvol | findstr /r \\\\
但是,您的特定场景不需要额外的引号或转义。只需直接运行PowerShell命令行,无需
cmd/c

paexec.exe \\remoteServer.0.1 -u username -p password powershell -command "&{...}"

是否可以完全使用powershell?如果是,您可以尝试以下方法:

New-PsDrive -Name X -Root \\127.0.0.1\c$ -PsProvider FileSystem -Credential (Get-Credential)
Copy-Item -Path X:\RequestedFile.txt -Destination C:\Temp
Remove-PsDrive -Name X
如果您的目的地是
http
地址,则可以执行以下操作:

Invoke-WebRequest -Uri http://some.uri -Method Get -OutFile C:\temp\myfile -Credential (Get-Credential)

希望对您有所帮助

是否可以完全使用powershell?如果是,您可以尝试以下方法:

New-PsDrive -Name X -Root \\127.0.0.1\c$ -PsProvider FileSystem -Credential (Get-Credential)
Copy-Item -Path X:\RequestedFile.txt -Destination C:\Temp
Remove-PsDrive -Name X
如果您的目的地是
http
地址,则可以执行以下操作:

Invoke-WebRequest -Uri http://some.uri -Method Get -OutFile C:\temp\myfile -Credential (Get-Credential)
希望这有助于

而不是:

psexec.exe \\remoteServer.0.1 -u username -p password -dbg -lo D:\PsExec.log cmd /c "powershell -command "& { (New-Object Net.WebClient).DownloadFile('linkToMyFile.file', 'C:\my.file') }""
这样做:

psexec.exe \\remoteServer.0.1 -u 'username' -p 'password' powershell.exe -Command "& {(New-Object System.Net.WebClient).DownloadFile('linkToMyFile.file', 'C:\my.file')}"
这应该做你的工作

希望能有所帮助。

而不是:

psexec.exe \\remoteServer.0.1 -u username -p password -dbg -lo D:\PsExec.log cmd /c "powershell -command "& { (New-Object Net.WebClient).DownloadFile('linkToMyFile.file', 'C:\my.file') }""
这样做:

psexec.exe \\remoteServer.0.1 -u 'username' -p 'password' powershell.exe -Command "& {(New-Object System.Net.WebClient).DownloadFile('linkToMyFile.file', 'C:\my.file')}"
这应该做你的工作


希望有帮助。

我试过这个。不工作,背勾?另外,当您可以直接调用powershell时,为什么要执行
cmd/c
?嗯,您是对的。我可以使用powershell.exe“mycommand”。我忘了,我试过这个。不工作,背勾?另外,当您可以直接调用powershell时,为什么要执行
cmd/c
?嗯,您是对的。我可以使用powershell.exe“mycommand”。我忘了。