我有一个具有 gui 用户界面的 PowerShell 应用程序,我的目标是在一个中心位置记录我向其发布应用程序的所有用户的活动。
此外,这必须是安全的,因此诸如“授予每个人对日志文件的写入权限”之类的解决方案不是可接受的解决方案。
我相信我已经成功地以另一个用户身份运行了 powershell,但是当它尝试运行 out-file 或 >> 命令时我的函数会中断。
这是我到目前为止尝试过的
function Start-ElevatedCode
{
param([ScriptBlock]$Code)
Start-Process -Credential $logCred -FilePath C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -WorkingDirectory \\Server\d$ -ArgumentList $code
Start-Process -FilePath C:\Windows\System32\cmd.exe -Credential $logCred
Start-Process $PSHOME\powershell.exe -ArgumentList "-NoExit","-Command `"&{`"`this is output string`' >> `'D:\Pojo Super User\Change.txt`'`"}`"" -Wait
}
显然,我不需要所有这三个,而只是我可以开始工作的一个。第一行是我真正需要工作的,另外两行只是用于测试/示例。
这三个命令的输出分别为:
Out-file : The device is not ready.
Start-Process : This command cannot be executed due to the error: The directory name is invalid.
The device is not ready.
我传入的 $code var 是:
$code = {$logString | Out-File -FilePath 'D:\LogPath\Change.txt'}
请仅使用 Powershell V2 及以下版本和 cmd 命令。这必须适用于所有系统。
任何人都知道为什么会生成此通用系统错误消息?
命令net helpmsg 21