관리자로 스크립트를 실행하지만 현재 로그인 한 사용자에 대한 정보를 표시합니다


1

나는 일반적으로 스크립트를 관리자로 실행하고 있으며 도메인에서 관리자가 수행하는 작업을 완료하는 데 시간이 걸립니다. 예를 들어 Office 버전을 제거하고 다른 버전을 설치하십시오.

앞에서 언급 한이 스크립트 (대부분 powershell 및 bat)는 현재 로그온 한 사용자와 다른 사용자 세션에서 관리자로 실행합니다.

해당 스크립트를 통해 현재 로그온 한 사용자에게 정보를 표시하는 방법이 있습니까?

너무 산만하지 않은 어떤 형태 나 형태로, 예를 들어 메시지 상자, 트레이 풍선 등을 선호합니다.

그들의 자격 증명은 나에게 알려져 있지 않습니다.

Msg.exe가 정보를 전송하는 동안 가능한 경우 좀 더 대화 형인 것을 찾고있었습니다.


1
RunAs는 매개 변수에 사용 된 사용자와 무관하게 (수동 또는 자동 박쥐에 의해) 응용 프로그램 / 스크립트를 시작한 사용자에게 출력합니다.
Akina

무엇을 이루려고 노력하고 있습니까? 스크립트가 실행 중임을 사용자에게 알리시겠습니까? 해당 스크립트의 콘솔 창을 숨기지 않는 한 해당 콘솔이 표시됩니다.
postanote

스크립트가 UserA에서 실행 중이면 UserB는 아무것도 보이지 않습니다.
Sonamor

@Sonamor이 스크립트를 어떻게 시작 했습니까? 코드를 제공해 주시겠습니까?
Hackoo

코드는 QUEST KACE SMA (이전의 DELL)를 통해 배포되지만 로그온 스크립트 또는 GPO 일 수 있습니다. 코드는 실제로 출력을 읽을 수있는 메시지 상자 일 수도 있습니다.
Sonamor

답변:


1

msg유틸리티에 대한 좋은 응용 프로그램입니다 . "내 일을 했어!"라는 메시지 상자가 나타납니다. 현재 대화식 세션에서 다음 명령을 사용하십시오.

msg console I did the thing!

/time스위치를 사용하여 지정된 시간 (초) 후에 메시지 상자가 자동으로 사라지도록 할 수도 있습니다 . 예를 들어이 메시지는 10 초 동안 만 유지됩니다.

msg console /time:10 This message will self-destruct in 10 seconds.

안녕 벤, 나는 원래 질문에 이것을 추가해야했지만 msg.exe를 이미 알고 있었다. 버튼을 누를 수있는 진행률 표시 줄이나 메시지 상자와 같은 대화 형 무언가를 찾고있었습니다.
Sonamor

@Sonamor Ah, 그건 약간 다른 질문입니다. 사용자가 메시지 상자를 승인 할 때까지 기다리려면 /w스위치를에 제공 할 수 있습니다 msg. 그 외에도 파일 기반 데이터 전송 메커니즘 psexec을 준비하고 사용자 지정 프로그램 / 스크립트를 시작하는 데 사용해야 합니다.
Ben N

나는 여기에 오기 전에 광범위한 연구를 한 것처럼 그럴 것이라고 생각했다. 그래도 / w 스위치를 알지 못했습니다. 감사합니다.
Sonamor

0

이 기능을 사용하여 사용자가 실제로 콘솔에 로그인 할 수 있습니다. 이것이 필요한 몇 가지 앱이 있습니다.

Function CurrentUser{
#CurrentUser function converts the username object string "@{username=domain\user}" 
#         to the exact logon string "user" like the example below
#@{username=DOMAIN\USER}
#@{username DOMAIN\USER}
#DOMAIN\USER}
#DOMAIN\USER
#DOMAIN USER
#USER
$loggedInUserName = get-wmiobject win32_computersystem | select username
$loggedInUserName = [string]$loggedInUserName
$loggedinUsername = $loggedInUserName.Split("=")
$loggedInUserName = $loggedInUserName[1]
$loggedInUserName = $loggedInUserName.Split("}")
$loggedInUserName = $loggedInUserName[0]
$loggedInUserName = $loggedInUserName.Split("\")
$loggedInUserName = $loggedInUserName[1]
Return $loggedInUserName
}

참조 : 여기에 링크 설명을 입력하십시오


승인? 그러면 관리자 계정이 아닌 시스템에서 로그인 한 사용자에게 정보를 제공 할 수 있습니다. 실제로 사용자와 상호 작용하거나 메시지 상자를 보낼 수 없습니까? .username | BTW 당신은 위의 $이 oneliner (선택-개체 이름은 Get-WMIObject에서 -class하여 Win32_ComputerSystem)를 사용할 수 있습니다
Sonamor

1
유스 케이스가 100 % 확실하지 않습니다.
discorallado

또는 더 짧은-(Get-WMIObject -class Win32_ComputerSystem) .Username --- 또는 --- (Get-WMIObject Win32_ComputerSystem) .Username --- 또는 --- (gwmi $ Win32_ComputerSystem) .Username. 그것과의 상호 작용에 관해서는, 그것을 무시하는 것 외에는 없습니다.
postanote

@postanote 대단한 일입니다! 작을수록 좋습니다!
discorallado
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.