仍然是PowerShell的新手,并且一直在创建自动化脚本,检查和平衡以及我能想到的任何使我们的工作日复一日的工作。我们正在处理的合同在应用程序和禁止开源\免费软件应用程序方面非常紧张。所以我一直在努力使用PowerShell来完成这项工作。
这是我到目前为止:
1.创建HKCR \ Directory \ Shell \ powershell(默认)Reg_sz搜索文件夹文本&日志文件
2.创建HKCR \ Directory \ Shell \ powershell \ command(默认)Reg_sz
C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe -file c:\temp\RightClickSearch.ps1 -NoExit -Command Set-Location -LiteralPath '%L'
我能够右键单击启动并打开脚本并提示我输入要搜索的关键字。问题是,我似乎无法弄清楚如何正确地将位置传递给脚本。
RightClickSearch.ps1
(我知道$ 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
答案 0 :(得分:1)
致电powershell.exe
时出现两个问题:
-File
和-Command
参数。您只能指定其中一个。-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
您可以从命令行中调用它:
C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe -File c:\temp\RightClickSearch.ps1 -Path '%L'
由于$Path
是唯一的参数,您甚至不必指定其名称:
C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe -File c:\temp\RightClickSearch.ps1 '%L'
具有讽刺意味的是,您可以以完全相同的方式使用-Command
参数。唯一的区别是你的脚本文件不是点源的,但在你给出的例子中并不重要。