2015-04-28 2 views
2

У меня есть код, который использует запрос WMI, но я столкнулся с проблемой, когда переменная, которую я использую, имеет '(одинарная кавычка), которая вызывает код неисправностиОстановить одиночную цитату из экранирования строки в запросе WMI powershell

Вот пример:

$path = "\\SERVER1\Mike O'Leary$" 
$servername = $path.Split('\')[2].Split('\')[0] 
$sharename = $path -replace ".*\\" -replace "'", "`'" 
Get-WmiObject Win32_share -computer $servername -filter "name='$sharename'" | Select Name,Path 

проблема заключается в том, что имя общего ресурса содержит "характер, так оно ошибки вне. Дорожки без 'отлично работает

Я попытался с помощью заменить видели выше, но это не помогает

Я пробовал различные комбинации цитаты, но я не могу получить это право, может кто-нибудь помочь?

Благодаря Бен

ответ

1

К сожалению, получается, что я должен был с помощью \ вместо `

$path = "\\SERVER1\Mike O'Leary$" 
$servername = $path.Split('\')[2].Split('\')[0] 
$sharename = $path -replace ".*\\" -replace "'", "\'" 
Get-WmiObject Win32_share -computer $servername -filter "name='$sharename'" | Select Name,Path 

Тайна решена!

1

Вам нужно избежать этого символа в WQL. A blog, который затрагивает это, говорит, что вы можете избежать этого с помощью обратного слэша.

$sharename = $path -replace ".*\\" -replace "'", "\'" 
0

Используйте двойные кавычки вместо одинарных кавычек в строке фильтра:

Get-WmiObject Win32_Share -Computer $servername -Filter "name=`"$sharename`"" | ... 

Вложенные двойные кавычки должны предваряться обратными кавычками, чтобы избежать их внутри строки в кавычках двойного фильтра.

Смежные вопросы