[英]Extract string without spacing in powershell cmdlet
我有一些powershell腳本。 而是可以鍵入totalcmd *,然后鍵入所需的另一個進程。
$tc = get-process -Name totalcmd* | format-wide -property Name
echo $tc
if ($tc -eq "Totalcmd64")
{
Stop-Process -Name totalcmd*
}
Start-Sleep 10
我認為這不起作用,因為我的$ tc不等於字符串“ totalcmd”。 如何刪除cmdlet的多余空間get-process -Name totalcmd* | format-wide -property Name
get-process -Name totalcmd* | format-wide -property Name
輸出並正確比較字符串?
您不會以字符串結尾,因為您通過管道傳遞到format-wide
。 這些cmdlet最適合在屏幕上表示數據。 而是選擇屬性,然后使用-ExpandProperty
將其作為字符串返回:
$tc = get-process -Name totalcmd* | Select-Object -ExpandProperty Name
echo $tc
...
通常,您認為$ tc不等於“ totalcmd”是正確的,這是因為設置$ tc時,您正在創建一個數組(很可能是一個元素)。 您可以通過運行$tc | get-member
$tc | get-member
以查看您正在使用哪種對象。
若要使用字符串對象,也可以使用Out-String
cmdlet。
如果要顯式停止TotalCmd64進程,為什么不簡單使用:
Get-Process -Name TotalCmd64 | Stop-Process
如果要在程序的64/32位版本之間切換,請使用switch語句(未經測試):
$tc = (Get-Process -Name TotalCmd*).Name
switch ($tc){
'TotalCmd' {Get-Process -Name TotalCmd |Stop-Process;"Start TotalCmd64";Break}
'TotalCmd64' {Get-Process -Name TotalCmd64|Stop-Process;"Start TotalCmd32";Break}
default {"No TotalCmd* processes found"}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.