gpt4 book ai didi

loops - 使用 Psloggedon 的 Powershell 查看谁最后登录了远程主机(来自主机列表)

转载 作者:行者123 更新时间:2023-12-01 10:35:38 25 4
gpt4 key购买 nike

我在使用 powershell 和 pslogged on 从 psloggedon 工具中提取“最后登录用户”和“登录时间戳”的信息时遇到问题。基本上我想做的是从一个包含所有服务器名称列表的文本文件中读取,然后在它们上使用 pslogged 来获取信息。因此,如果我单独运行以下命令,它会起作用

psloogedon \\server1

但是当我在 powershell 中这样做时它不起作用

$content = [IO.File]::ReadAllText("C:\assets.txt")
Foreach($computer in $content)
{
Invoke-Expression "psloggedon -x -l \\$computer"
} Export-Csv -NoTypeInformation loggedon.csv

在 assets.txt 中我们有以下内容:

server1
server2
server3
etc...

我如何基于此进行构建以 1) 使脚本工作以使用 psloggedon 获取信息 2) 将登录用户、计算机名称和时间戳解析为包含 3 列的 CSV 文件?

感谢任何帮助....

最佳答案

这对我有用

get-content 'C:\assets.txt' | % {
$computer = $_
. 'c:\pstools\PsLoggedon.exe' -accepteula -x -l \\$Computer 2>$null |
? {$_ -match '^\s{2,}((?<domain>\w+)\\(?<user>\S+))|(?<user>\S+)'} |
Select-Object `
@{n='Computer';e={$Computer}},
@{n='Domain';e={$matches.Domain}},
@{n='User';e={$Matches.User}} |
? user -notmatch '^Connecting$|^Users$|^NT$'
} | epcsv 'c:\loggedon.csv' -not

另一个例子

gc 'C:\assets.txt' | % {
$computer = $_
. 'c:\pstools\PsLoggedon.exe' -accepteula -l \\$Computer 2>$null |
? {$_ -match '^\s{2,}(?<time>.*)\s{2,}(?<user>.*)'} | % {
New-Object psobject -prop @{
Computer = $computer
Time = $Matches.time.Trim()
User = $Matches.user.Trim()
}
} | ? user -notmatch '^Connecting$|^Users$|^NT$'
} | epcsv 'c:\loggedon.csv' -not

如果您使用的是 csv,您只需像这样替换前两行

import-csv 'C:\assets.csv' | % {
$computer = $_.computers

或者这个

import-csv 'C:\assets.csv' | select -exp computers -u | % {
$computer = $_

关于loops - 使用 Psloggedon 的 Powershell 查看谁最后登录了远程主机(来自主机列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36045366/

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