If you have rights or access to a userid with rights, use Win32::Lanman or Win32::NetResource to map to the remote machine's ipc$ share (w/o drive letter) as that userid (or do a
net use \\remotehost\ipc$ * /user:[domain\]userid. If I remember right you must have 'Allow user to logon from the network' and 'Allow user to shutdown the system' rights. Then call
Win32::InitiateSystemShutdown(
$machine,
$message,
$count,
$force,
$reboot
);
Returns true (1) on success, which you will capture, of course.
Remember:
$machine should have either \\\\ or // prepended to the hostname/IP address or simply "" for localhost
$message is a quoted text string to display in the pop-up on $machine
$count is the number of seconds for a countdown to shutdown/reboot
$force = 1 means applications will die in an undignified mannor, not saving data. 0 means apps will try to die gracefully, but may hang the request.
$reboot = 1 the box will reboot versus a shutdown (0)
HTH!
Dex
p.s. - there is a matching Win32::AbortSystemShutdown which, if sent before $count seconds from above, will cancel the shutdown. |