gpt4 book ai didi

powershell - 如何记录运行的 PowerShell 命令

转载 作者:行者123 更新时间:2023-12-04 20:32:58 26 4
gpt4 key购买 nike

我是 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 命令创建,这导致只有 write-host 消息和 stop-process 被写入我的事务/日志文件。但是,我需要将记事本进程已启动然后停止的信息写入我的文件。

最佳答案

下面的脚本会给你你所要求的:

为了更好地理解,我在每个阶段的脚本本身中添加了注释。您可以添加一个 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

示例文件输出:

Sample file output is attached as screenshot:

对于远程执行:

Get-Process -Name notepad -ComputerName SERVER01 | Stop-Process



备注 :有多种方法可以远程停止服务。通过 PowerShell 远程处理并查看详细信息。

关于powershell - 如何记录运行的 PowerShell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41464495/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com