2

これは単純なはずですが、powershell は私との別の戦いに勝っています。システムで実行されているすべてのサービスの名前とそれらの実行可能パスを出力し、それをパイプして、Less のように検索に使用できるようにしたいだけです。

これまでのところ、私は持っています:

$services = get-WmiObject -query 'select * from win32_service'
foreach($service in $services){$service.Name $service.Pathname} | less

しかし、「空のパイプ要素は許可されていません」というメッセージが表示されます。私はたくさん出てきたようです。ファイルに出力してvimで処理するか、ページ/レス/などにパイプしてクイックスキャンを実行できるようにすることで、これを修正する方法を誰でも教えてくれます(私の目はまだプログラムではありません)。

4

4 に答える 4

5

次のことを試してください

$services | %{ $_.Pathname } | less

編集パスに複数追加

$services | %{ "{0} {1}" -f $_.Pathname,$_.Name } | less
于 2010-02-25T18:58:31.510 に答える
3

PowerShell 2.0 を使用している場合は、次のようになります。

gwmi win32_service | select-object Name,PathName | ogv

ogv (Output-GridView) は、2.0 の新しいコマンドレットです。

于 2010-02-26T16:04:20.013 に答える
1
get-wmiobject win32_service | select-object name, pathname | more

これもpowershell 2.0で、上記のコメントに近いものです。この場合、必要のないときに foreach を使用しようとしていました。

foreach を使用しても、処理できる出力が得られそうです。foreach のコンマは、リストのような出力を生成し、less の代わりに more コマンドを使用できます。

$services = get-WmiObject -query 'select * from win32_service'
foreach($service in $services){$service.Name  $service.Pathname} | more

これと同じステートメントを別の方法で書きます。

get-WmiObject win32_service | foreach{$ .Name, $ .Pathname} | もっと

これはまだ私の最初の例と同じではありませんが、あなたがどれだけ近いかを示したかったのです.

于 2010-02-27T02:12:18.247 に答える
0

foreach-object を使用する正当な理由のように見えます。

$services = get-WmiObject -query 'select * from win32_service'
$services|ForEach-Object {$_|Select-Object Name,Pathname}|less

申し訳ありませんが、オンライン化しています:

get-WmiObject -query 'select * from win32_service' |ForEach-Object {$_|Select-Object Name,Pathname}|less

foreach-object は、入力オブジェクトに基づいてオブジェクトをパイプラインに返します。

私はそれを持っていないように見えるので、less はあなた自身の作成したエイリアスであると想定しています。

于 2010-02-26T15:28:22.750 に答える