我是PowerShell的新手,所以这可能很明显,或者我用我的方法咆哮错误的树。但是在这里搜索和谷歌没有帮助我(可能会搜索错误的术语?)
我正在尝试编写一个简单的PowerShell脚本(它可以正常运行/运行)。但是,我还要求将进程(命令运行和任何输出)记录到我正在努力实现的txt文件中。我尝试使用start-transcript并添加-verbose
通用参数,但它没有像我期望的那样工作。
我的最终目标是让脚本在我们的一台服务器上运行,这将停止服务,停止服务的任何相关进程,然后再次启动服务。但是对于这个无法记录正在发生的事情的例子,我已将其简化为启动和停止进程。我的例子如下:
Start-Transcript -path "C:\tester.txt"
Write-Host "starting the shell command"
Start-Process notepad -verbose
Start-Sleep -s 5
Stop-Process -processname notepad -verbose
Stop-Transcript
脚本运行,记事本打开,等待5秒钟,然后再次关闭。但是,仅为stop-process命令创建详细输出,这会导致只写入主机消息并将停止进程写入我的事务/日志文件。但是我需要它写入我的文件,记事本进程已启动然后停止。
答案 0 :(得分:3)
以下脚本将为您提供所需内容:
为了更好地理解,我在每个阶段都在脚本中添加了注释。您可以添加 Logfile.txt 检查是否存在,基于您还可以创建该文件。 Get-History 将为您提供已在shell上执行的所有命令的历史记录。
$Log_File= "E:\LogFile.txt"
Clear-History
# You can do a file check using Test-Path followed by the path
## Out-file will give the output to the file, -Force will create the file if not existed and -append will append the data.
"starting the shell command" | Out-File $Log_File -Force -Append
Start-Process notepad -verbose
"Notepad started" | Out-File $Log_File -Append
Start-Sleep -s 5
Stop-Process -processname notepad -verbose
"Notepad stopped" | Out-File $Log_File -Force -Append
"List of commands which are executed are below: " | Out-File $Log_File -Force -Append
Get-History | Out-File $Log_File -Append
示例文件输出:
远程执行:
Get-Process -Name notepad -ComputerName SERVER01 |停止过程
注意:有多种方法可以远程停止服务。浏览PowerShell Remoting并查看详细信息。