使用Invoke-Command时要求用户输入

时间:2019-05-29 00:59:09

标签: powershell

最近,我在“域”设置中使用Powershell命令注销了夜间不注销的远程用户。我正在使用命令

    Invoke-Command -ComputerName $name { quser }

确认该人已登录。

    Invoke-Command -ComputerName $name { logoff 2 }

(2是会话ID) 这可以很好地工作,但是每次都要编辑.ps1文件来更改工作站的名称时,会很烦。我正在尝试编辑此命令,以便它将要求用户输入,然后将用户输入用作运行该命令的工作站,但是每当我使用以下代码时,它都将不起作用。

    $name = Read-Host -Prompt 'Enter the name of the computer' 
    Invoke-Command -ComputerName computer1 { quser }

这仅适用于quser,直到我得到包括Logoff 2在内的此类不良工作。抱歉,如果我错过了Powershell的新信息,就对不起。

1 个答案:

答案 0 :(得分:0)

由于远程桌面命令行工具可以远程工作,因此无需使用PowerShell调用远程会话。请尝试以下脚本,该脚本将注销所有用户在远程计算机上。

param([string]$ComputerName)

# Cleanup the quser.exe output a little and turn it into an object
# Modified from: https://ss64.com/nt/query-user.html

$sessions = (quser /server:$ComputerName) -replace '\s{2,}', ',' -replace '>','' | ConvertFrom-Csv

foreach ($session in $sessions)
{
    Write-Output "Logging off user $($session.USERNAME) with session ID $($session.ID) on $ComputerName..."
    (logoff $session.ID /server:$ComputerName /V)
}

将脚本另存为LogOffUsers.ps1并从PowerShell提示符运行的示例用法。

.\LogOffUsers.ps1 -ComputerName SFWEB01