2017-02-03 1 views
0

私はこのコードを持っている:cmdではどのシンボルがエスケープ文字ですか?

powershell -command "& { (New-Object Net.WebClient).DownloadFile('linkToMyFile.file', 'C:\my.file') }" 

それは、ダウンロードファイルのためです。
リモートサーバ上のcmdで実行すると、すべて正常です。
しかし、paexecを使用してリモートサーバ上のコンピュータからこのコードを実行する場合、エスケープ文字に問題があります。私のCMDで
コマンド:

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 -dbg -lo D:\PsExec.log cmd /c "powershell -command ^"& { (New-Object Net.WebClient).DownloadFile('linkToMyFile.file', 'C:\my.file') }^"" 

はまた、私は脱出のために(PHPのように)\を使用しようとしましたが、同じ結果を持っています。
これを参考にするか、コマンドラインを使用してリモートからファイルをダウンロードする方法をアドバイスしてください。

+0

http://stackoverflow.com/questions/10296162/escaping-special-characters-in-cmd –

+0

私はこれを試しました。働かないでください。 –

+0

バックティック?また、powershellを直接呼び出すことができるときに 'cmd/c'をなぜ行うのですか? – 4c74356b41

答えて

1

残念ながら、CMDでは、エスケープされる内容と場所によって、different escape charactersが使用されます。あらゆる場所で使用される単一のエスケープ文字はありません。

ほとんどの場合、次の文字には、キャレット(^)を前に付けることでエスケープされます。 for /fループで:

for /f "tokens=1" %%a in ('type file.txt ^| find "something"') do ... 

しかし、時には文字は、例えば、それらを2倍にすることにより、エスケープされていますバッチスクリプトのパーセント文字(%):

@echo off 
echo %%DATE%%=%DATE% 

時にはあなたも、あなたがいないCMDのために何かをエスケープする必要があるため(バックスラッシュのような)他のエスケープ文字に配置する必要がある必要があるかもしれませんが、コマンドの文字列が中です

mountvol | findstr /r \\\\ 

あなたの特定のシナリオでは、別の引用符やエスケープは必要ありません。ただ、cmd /cせずに、直接、PowerShellのコマンドラインを実行します。

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

それは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) 

・ホープこれに代えて

0

役立ちます:

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') }"" 

DO:

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

これはあなたの作業を行うはずです。

希望します。

関連する問題