2016-05-23 9 views
-2

スラッシュの処理に関する多くの情報がInvoke-RestMethodにありますが、バックスラッシュの処理については何も見つかりませんでした。彼らは避けなければならないことは知っていますが、私は情報を変更できないところで働くためにいくつかの制約があります。ここで私は何をしようとしているのです:Invoke-RestMethodバックスラッシュ付きのURL

Invoke-RestMethod "http://blah.blah.net/api/Reporting/$ServerName" -Method Get 

それは他のインスタンス上で正常に動作しますが、今回$ServerNameが「Server1に\ SQLserv」のような値を持つことになります。私は、$ServerName -replace "\", "\\\"とそれ以外のバリエーションを使用して試していましたが、バックスラッシュの代わりに%5C(URLエスケープ文字)を使用しました。何も働いていないようです。誰でも遭遇した(そして解決した!)これは?

編集:ここで私が得ている特定のエラーがあります。

Invoke-RestMethod : The resource you are looking for has been removed, had its 
name changed, or is temporarily unavailable. 
At line:1 char:1 
+ Invoke-RestMethod "http://blah.blah.net/api/Report ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException 
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
+1

は、私には、サーバー側の問題のように見えます。また、 'Server1 \ SQLserv'は実際にはサーバー名ではありません。これはSQL Serverインスタンスの名前です。あなたのWebアプリケーションがこれを実際に入力として受け入れることは確実ですか? –

+0

私は同意する、それはサーバー側の問題と思われる。障害時には、実際には、サーバーの名前です。はい、Webアプリはこれを入力として受け入れることができます。私はこれを見て調査するほど、これを達成するための別の方法を見つけるべきだと思う。バックスラッシュをまったく利用しなくても済むように、データベースエントリを混乱させることさえあるかもしれません。ご協力いただきありがとうございます。 –

答えて

1

-Replaceは正規表現置き換え方式であることにもかかわらず、私が照会している他のサーバでうまく動作することに注意してください。リテラル文字だけを置き換える文字列置換メソッドを試すことができます。

$ServerName.Replace('\','/') 
Invoke-RestMethod "http://blah.blah.net/api/Reporting/$ServerName" -Method Get 

今、あなたはまた、「SQLserv」という文字列を削除する必要がある場合、私はこれを行うだろう:、これはおそらく、サーバーエラーである

$Server = Split-Path -Path $ServerName -Parent 
Invoke-RestMethod "http://blah.blah.net/api/Reporting/$Server" -Method Get 
+0

素晴らしい情報、ありがとう。私はまだ問題を抱えていますが、私は別のアプローチを試みると思います。あなたのご意見ありがとうございます! –

1

Ansgar mentioned通り。しかし、私はあなたのuriをエスケープするEscapeUriString機能を使用することをお勧めします:

$ServerName = "Server1\SQLserv" 
$myUri = [System.Uri]::EscapeUriString("http://blah.blah.net/api/Reporting/$ServerName") 
Invoke-RestMethod $myUri -Method Get 
+0

ありがとうございました。それでも問題はありますが、これはおそらく私が将来使用できるものです!メインスレッドのコメントで言及したように、私はこれを達成する別の方法を見つけるつもりだと思います。 –

関連する問題