如何在powershell脚本中使用参数
我如何才能做到这一点: 我尝试将其用作脚本,以便它列出我使用脚本作为参数发送的进程:如何在powershell脚本中使用参数,powershell,Powershell,我如何才能做到这一点: 我尝试将其用作脚本,以便它列出我使用脚本作为参数发送的进程: for ($i=0; $i -lt $args.length; $i++) echo (Get-Process | Where-Object {$_.name -eq $($args[$i])}) } 但是,当我运行它时,它不会列出任何内容: ./list_process notepad svchost 当我手动操作时,它工作正常: Get-Process | Where-Object {$_.name
for ($i=0; $i -lt $args.length; $i++)
echo (Get-Process | Where-Object {$_.name -eq $($args[$i])})
}
但是,当我运行它时,它不会列出任何内容:
./list_process notepad svchost
当我手动操作时,它工作正常:
Get-Process | Where-Object {$_.name -eq "notepad")}
问题是每个scriptblock都是新的,所以请使用temp变量:
for ($i=0; $i -lt $args.length; $i++){
$outerArg = $args[$i]
Get-Process | Where-Object {$_.name -eq $outerArg}
}
在这种情况下,您可以将其简化很多
Get Process
支持一个processname数组,因此您只需将整个$args
-array传递给它即可
PS > Get-Help Get-Process -Parameter name
-Name <String[]>
Specifies one or more processes by process name.
You can type multiple process names (separated by commas) and use wildcard characters.
The parameter name ("Name") is optional.
测试:
完美@Frode。
您还可以构建一个高级函数来执行更多操作:
Function Get-SelectiveProcesses{
[CmdletBinding()]
Param
(
[Parameter(Mandatory = $true)]
[string[]] $process
)
Get-Process $process
#Do other Things
}
然后调用脚本中的函数,如
PS C:\> Get-SelectiveProcesses notepad,svchost
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
85 6 3672 7580 75 1.23 5260 notepad
711 51 19148 7588 123 568 svchost
404 10 3492 2760 56 844 svchost
373 11 3540 2896 41 1220 svchost
514 52 23436 7016 100 1324 svchost
631 31 85248 74368 200 1384 svchost
1458 109 31540 19140 180 1428 svchost
322 31 8388 3976 64 1628 svchost
372 30 32908 12736 171 1688 svchost
336 54 13672 4768 77 2096 svchost
126 47 6916 2344 61 2272 svchost
131 8 3228 532 55 3972 svchost
160 23 7456 1880 63 4032 svchost
键入有关函数的帮助以了解更多信息
Function Get-SelectiveProcesses{
[CmdletBinding()]
Param
(
[Parameter(Mandatory = $true)]
[string[]] $process
)
Get-Process $process
#Do other Things
}
PS C:\> Get-SelectiveProcesses notepad,svchost
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
85 6 3672 7580 75 1.23 5260 notepad
711 51 19148 7588 123 568 svchost
404 10 3492 2760 56 844 svchost
373 11 3540 2896 41 1220 svchost
514 52 23436 7016 100 1324 svchost
631 31 85248 74368 200 1384 svchost
1458 109 31540 19140 180 1428 svchost
322 31 8388 3976 64 1628 svchost
372 30 32908 12736 171 1688 svchost
336 54 13672 4768 77 2096 svchost
126 47 6916 2344 61 2272 svchost
131 8 3228 532 55 3972 svchost
160 23 7456 1880 63 4032 svchost