2016-05-28 7 views
0

PowerShellをまだ使い慣れていないし、自動化スクリプト、小切手と残高を作成しています。我々が取り組んでいる契約は、アプリケーションに関してはきわめて厳しいもので、オープンソース/フリーウェアのアプリケーションは禁じられています。だから、私は仕事をするためにpowershellを使うことに取り組んできました。
1.作成したHKCR \ディレクトリ\シェル\ PowerShellの(デフォルト)REG_SZ検索フォルダのテキスト&ログファイル
2.作成したHKCR \ディレクトリ\シェル\ PowerShellの\コマンド(デフォルト:ここで 右クリックコンテキスト - フォルダ.txtと.logファイルを検索

は、私がこれまで持っているものです)Reg_sz

C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe -file c:\temp\RightClickSearch.ps1 -NoExit -Command Set-Location -LiteralPath '%L' 

私は右クリックして起動することができ、スクリプトが開き、自分のキーワードを検索するように促します。問題は、私はスクリプトに場所を適切に渡す方法を把握していないようです。

RightClickSearch.ps1
(私はそれがハードコードされた前に$パスが、設定されていません知っていると私は、メニューから、そこに変数を渡すために知っている)

$promt = (Read-Host -Prompt "Enter Search Keyword") 
Get-ChildItem -Path $Path -Include *.txt, *.log -Recurse | Select-String -Pattern $promt | Format-table -AutoSize -Property LineNumber,Filename,Path 
Pause 

答えて

1

二つがあります。 powershell.exeへのお電話での問題:

  • あなたは両方-File-Commandパラメータを指定することはできません。そのうちの1つしか指定できません。
  • のいずれかを指定する場合は、を指定します。コマンドの最後のパラメータにする必要があります。あなたの例では、-NoExit-Commandのパラメータは無視されます。 (説明のためにpowershell.exe -?を入力してください。)

良いニュースは、PowerShellスクリプト自体はparamキーワードを使用して引数を受け取ることができるということです。単にあなたのスクリプトの先頭にパラメータを宣言します。

param ($Path) 
$promt = (Read-Host -Prompt "Enter Search Keyword") 
Get-ChildItem -Path $Path -Include *.txt, *.log -Recurse | Select-String -Pattern $promt | Format-table -AutoSize -Property LineNumber,Filename,Path 
Pause 

次のようなコマンドラインからそれを呼び出す:

​​

$Pathは唯一のパラメータであるので、あなたも持っていません。その名前を指定するには:

C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe -File c:\temp\RightClickSearch.ps1 '%L' 

を皮肉なことに、あなたは、まったく同じ方法で-Commandパラメータを使用することができます。唯一の違いは、あなたのスクリプトファイルはドットソースではなく、あなたが与えた例では問題ではないということです。

関連する問題