我正在寻找一种方法来在我们内部网托管的网页上创建文件索引。
这些文件位于不同的网络共享位置,例如 \nas\documents\tender.doc
当用户单击文件时,我希望使用与文件关联的任何程序在其电脑上打开该文件。例如,使用 notepad++ 打开 *.txt,使用 word 打开 *.doc 等
用户需要能够编辑该文件,然后将其保存在原始位置。
我不希望用户必须下载文件、编辑它然后上传它。
答案1
使用相同的psexec
命令,但不使用-p SomePassword
。系统将提示您输入密码,并且您的输入不会显示在屏幕上。
如果这是批处理脚本的一部分,请将以下内容放在脚本的开头:
@ECHO OFF
这将禁用命令回显到终端,因此脚本中的命令在运行时不会显示。命令输出仍会显示。
如果要保留命令回显,但隐藏此命令,请在命令前加上一个@
符号。例如:
@ PSExec.exe -accepteula -h -d -u someUser -p somePassword -i 1 C:\WINDOWS\SYSTEM32\CMD.EXE /c start "" "C:\WINDOWS\SYSTEM32\CALC.EXE
请记住,密码仍将以纯文本形式存在于脚本文件中。一般来说,这不是一个好主意。
答案2
使用 PowerShell,您可以将用户名和加密密码存储在文本文件中。自动化任务可以从文本文件中读取凭据并创建 PSCredential 对象,使用开始进程使用这些凭据启动可执行文件。
存储凭证:
$path = <path_to_text_file> Read-Host "Username" | Out-File $path Read-Host "Password" -AsSecureString | ConvertFrom-SecureString | Out-File -Append $path
注意ConvertFrom-SecureString做不是将安全字符串解密为纯文本;它将其转换为可以存储在文件中的加密文本。运行此命令后,您将得到一个包含两行的文件。第 1 行包含用户名,第 2 行包含加密密码。
在自动化任务中,读取凭据并使用它们在该帐户上下文中启动可执行文件:
$stored_creds = Get-Content <path_to_text_file> $username = $stored_creds[0] $password = $stored_creds[1] | ConvertTo-SecureString $credential = New-Object System.Management.Automation.PSCredential $username, $password Start-Process <path_to_executable> -Credential $credential
请注意,这
<path_to_executable>
只是:可执行文件的路径,而不是完整的命令行('C:\Windows\System32\calc.exe'
在您的示例中)。如果您有任何参数,请添加-ArgumentList <the_rest_of_the_command_line>
。