2015-08-26 17 views
1

我拉動當地簽署了從WMI機器的用戶,並將其存儲在一個變量,像這樣:因爲字符串中包含的字符在替換的PowerShell命令失敗「」它

$user = (Get-WmiObject -Class Win32_ComputerSystem -ComputerName $hostname).username 

而且效果很好。問題是,WMI格式返回信息

CONTOSO \用戶名

我需要插入變量到獲取-ADUser便有命令,該命令將不接受

「CONTOSO \」

當我嘗試使用PowerShell中替換命令,它失敗,因爲的‘\’在命令中存在:

$user = $user -replace "CONTOSO\" 

The regular expression pattern CONTOSO\ is not valid. 
At line:1 char:1 
+ $user = $user -replace "CONTOSO\" 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : InvalidOperation: (CONTOSO\:String) [],  RuntimeException 
+ FullyQualifiedErrorId : InvalidRegularExpression 

是否有另一種方法可以刪除這些字符,以便將其插入Get-ADUser?在將其插入Get-ADUser之前,可能會從gwmi中清除輸出?或者,有沒有某種字符轉義序列?

+0

\是我所知道的大多數語言中的轉義字符。嘗試用\\替換它:'$ user = $ user -replace「CONTOSO \\」' –

+0

棒極了!這樣做了,呃!應該想到從一開始就嘗試。謝謝! –

回答

0

-replace運算符執行正則表達式替換。在正則表達式中,字符\是用於轉義特殊字符的特殊字符,因此您需要\\來匹配文字反斜線。

相關問題