我有一個函數,我正在編寫,我想在WMI調用中創建一個通配符進程。想知道我的選擇可能是什麼。我的第一個想法是獲取發送的參數值並用百分號替換任何星號,並且有一個case語句,它將使用查詢字符串,具體取決於是否需要使用LIKE
語句。我是否過於複雜化,是否有更簡單的方法,我沒有找到?創建函數參數接受通配符
下面是函數的頂部,因爲它使
[CmdletBinding()]
Param(
[Parameter(Mandatory=$false,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$True)][string]$Name = "",
[Parameter(Mandatory=$false,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$True)][string]$ComputerName = $env:ComputerName,
[Parameter()][string]$Port = "",
[Parameter()][switch]$Full
)
Process {
if($ComputerName.Trim()) {
try {
$printers = (Get-WmiObject -Query "select * from Win32_printer where portname like '%$port%' and name like '%$Name%' " -ComputerName $ComputerName -EnableAllPrivileges -ErrorAction Stop)
這是什麼樣的,我想也沒有用。
感謝@Matt編輯和答案。你將如何使用你的格式方法來引導一個基於位置的通配符,即'傳真%'和'%傳真%'。我認爲我發現了一個非常簡單的方法,通過您對類似聲明的評論,也將搜索等同於某種程度上當%不存在並將發佈時。 – ssaviers
@ssaviers最簡單的事情是將一個帶有ValidateSet的字符串設置爲Wild ['ValidateSet(「On」,「Off」,「Prefix」,「Suffix」)]''。然後使用switch語句,可以有條件地設置通配符的存在。 – Matt