2016-12-13 311 views
1

Powershellスクリプトでは、 "rmtshare.exe"を使用して共有レベルのアクセス権に関する情報を取得します。 「rmtshare.exe」は、以下のコマンドを使用してCMDの環境下で完全に実行することができます:CMDを実行するpowershellスクリプトでスペースとアンパサンドを同時にエスケープする方法

rmtshare.exe \\fs-sw-206\"C&C FQT" 

をしかし、私はPowerShellの環境にそれを持って来るとき。私はスペースとアンパサンドをエスケープする方法を理解できません。上記のスクリプトは、CMDからのエラーメッセージを表示します

$rmtShare = "C:\rmtshare.exe" 
$ServerName = "fs-sw-206" 
$ShareName = "C&C FQT" 
Invoke-Expression ($rmtShare + " " + "\\" + $ServerName + "\" + $ShareName) 

が、それは「共有名またはパスにスペースが含まれている場合、それは引用符で囲む必要があります」と述べた。ここで私はそれが動作していないされ、これまでにしようとしているものです。私はこれまで、最後の行に変更した場合 :

Invoke-Expression ($rmtShare + " " + "\\" + $ServerName + "\" + "'"+'"'+"'" + $ShareName +"'"+'"'+"'") 

エラーメッセージがPowerShellの自体からだったが、それは「アンパサンド(&)文字が許可されていません」と述べました。注:アンパサンドがない場合、動作します。だから、私は同時に両方の文字をエスケープする必要があるので、私は立ち往生しています。

解決策をご提供ください。

rmtshare.exeをダウンロードして自分自身をテストする必要があるかもしれません。ダウンロードサイト: - エスケープスペースやアンパサンド、他の解決策があるはずCMD

$s = " " 
$q = '"' 
$Verbatim = '--%' 
$rmtShare = "C:\rmtshare.exe" 
$ServerName = "fs-sw-206" 
$ShareName = "C&C FQT" 
Invoke-Expression ($rmtShare +$s+$Verbatim+$s+"\\"+$ServerName+"\"+$q+$ShareName+$q) 

を実行しているのPowerShellスクリプトで同じ時間に(https://www.symantec.com/connect/downloads/remove-folder-share-remote-computer

+1

それ自身の後にすべてをエスケープする変数を組み込むことができます:http://ss64.com/ps/syntax-esc.html – 4c74356b41

+0

ヒントありがとう!はい、それは - %を組み込んで動作しています。私は後で最終的な解決策を掲示します。 –

答えて

1

ので、ここでの問題を克服PowerShellのコードがあります。あなたがそれを知っていれば投稿してください。

関連する問題