либо сначало завершать сеанс пользователя, а уже потома вырубать комп)
» Автоматизация администрирования. Часть 2
YNY
первый вариант предпочтительнее
первый вариант предпочтительнее
[more=Вот]
Win32ShutdownTracker Method of the Win32_OperatingSystem Class
The Win32ShutdownTracker method provides the same set of shutdown options supported by the Win32Shutdown method in Win32_OperatingSystem, but it also allows you to specify comments, a reason for shutdown, or a timeout. The calling process must have the SE_SHUTDOWN_NAME privilege.
uint32 Win32ShutdownTracker(
[in, optional] uint32 Timeout,
[in] string Comment,
[in] uint32 ReasonCode,
[in] sint32 Flags
);
Parameters
Timeout
Time, in seconds, before shutdown takes place. The default value is 0 (zero).
Comment
Message to display in the shutdown dialog box that is also stored as a comment in the event log entry.
ReasonCode
Reason for initiating the shutdown.
Flags
Bitmapped set of flags to shut the computer down. To force a command, add the Force flag (4) to the command value. Using Force in conjunction with Shutdown or Reboot on a remote computer immediately shuts down everything (including WMI, COM, and so on), or reboots the remote computer. This results in an indeterminate return value.
Value Meaning
0
0x0
Log Off
4
0x4
Forced Log Off (0 + 4)
1
0x1
Shutdown
5
0x5
Forced Shutdown (1 + 4)
2
0x2
Reboot
6
0x6
Forced Reboot (2 + 4)
8
0x8
Power Off
12
0xC
Forced Power Off (8 + 4)
[/more]все описание функции вырубания win и 2000
Returns zero (0) to indicate success. Any other number indicates an error.
Добавлено:
первый вариант предпочтительнее зато второй я тебе уже привел) и он проще (не нужно искать всех активных юзеров, не нужно знать их пароли)
Win32ShutdownTracker Method of the Win32_OperatingSystem Class
The Win32ShutdownTracker method provides the same set of shutdown options supported by the Win32Shutdown method in Win32_OperatingSystem, but it also allows you to specify comments, a reason for shutdown, or a timeout. The calling process must have the SE_SHUTDOWN_NAME privilege.
uint32 Win32ShutdownTracker(
[in, optional] uint32 Timeout,
[in] string Comment,
[in] uint32 ReasonCode,
[in] sint32 Flags
);
Parameters
Timeout
Time, in seconds, before shutdown takes place. The default value is 0 (zero).
Comment
Message to display in the shutdown dialog box that is also stored as a comment in the event log entry.
ReasonCode
Reason for initiating the shutdown.
Flags
Bitmapped set of flags to shut the computer down. To force a command, add the Force flag (4) to the command value. Using Force in conjunction with Shutdown or Reboot on a remote computer immediately shuts down everything (including WMI, COM, and so on), or reboots the remote computer. This results in an indeterminate return value.
Value Meaning
0
0x0
Log Off
4
0x4
Forced Log Off (0 + 4)
1
0x1
Shutdown
5
0x5
Forced Shutdown (1 + 4)
2
0x2
Reboot
6
0x6
Forced Reboot (2 + 4)
8
0x8
Power Off
12
0xC
Forced Power Off (8 + 4)
[/more]все описание функции вырубания win и 2000
Returns zero (0) to indicate success. Any other number indicates an error.
Добавлено:
первый вариант предпочтительнее зато второй я тебе уже привел) и он проще (не нужно искать всех активных юзеров, не нужно знать их пароли)
Понадобилось собрать с компов в локальной сети (домен) след. информацию:
- Имя ПК (в качестве имени файла)
- объём свобод. места на системном разделе
- Версию ОС. Сервис пак.
В идеале отчётный файлик будет складываться на сетевой ресур, откуда всё это можно и посмотреть.
Пробовал сделать с помощью Everest, но у него в отчёте слишком много лишнего, даже когда указаны только нужные параметры для отчёта.
А со скриптами я что-то не очень лажу. Если есть наработки в данном направлении, прошу у вас помощи.
- Имя ПК (в качестве имени файла)
- объём свобод. места на системном разделе
- Версию ОС. Сервис пак.
В идеале отчётный файлик будет складываться на сетевой ресур, откуда всё это можно и посмотреть.
Пробовал сделать с помощью Everest, но у него в отчёте слишком много лишнего, даже когда указаны только нужные параметры для отчёта.
А со скриптами я что-то не очень лажу. Если есть наработки в данном направлении, прошу у вас помощи.
cluster
это может сделать не замысловатый батник...
Задачи на bat-файлах - здесь вам его быстро помогут наклепать... мне честно лень и я сижу в лине)))
это может сделать не замысловатый батник...
Задачи на bat-файлах - здесь вам его быстро помогут наклепать... мне честно лень и я сижу в лине)))
Каждый день делаю одни и те же действия:
1. подключаю съёмный диск
2. на нём подключаю диск-контейнер TrueCrypt
3. на этом диске расшариваю одну папку для общего доступа, а другую с ограничением прав доступа
Вопрос: как автоматизировать действие 3 батником, скриптом или ещё какой полезностью?
1. подключаю съёмный диск
2. на нём подключаю диск-контейнер TrueCrypt
3. на этом диске расшариваю одну папку для общего доступа, а другую с ограничением прав доступа
Вопрос: как автоматизировать действие 3 батником, скриптом или ещё какой полезностью?
Нужен vb-скрипт, котоый сканирует диапазон сети (192.168.1.1 - 192.168.1.254) и выводит netbios-имена пингуемых компов.
пинг по диапазону есть:
Код:
Function fnPing( strHost )
Dim objPing, objRetStatus
Set objPing = GetObject( "winmgmts:{impersonationLevel=impersonate}" ).ExecQuery _
( "select * from Win32_PingStatus where address = '" & strHost & "'" )
For Each objRetStatus in objPing
If IsNull( objRetStatus.StatusCode ) or objRetStatus.StatusCode <> 0 Then
fnPing = -1
Else
fnPing = objRetStatus.ResponseTime
End If
Next
End Function
пинг по диапазону есть:
Код:
Function fnPing( strHost )
Dim objPing, objRetStatus
Set objPing = GetObject( "winmgmts:{impersonationLevel=impersonate}" ).ExecQuery _
( "select * from Win32_PingStatus where address = '" & strHost & "'" )
For Each objRetStatus in objPing
If IsNull( objRetStatus.StatusCode ) or objRetStatus.StatusCode <> 0 Then
fnPing = -1
Else
fnPing = objRetStatus.ResponseTime
End If
Next
End Function
YURETS777
ну вот кусок vbs которого вам не хватало, вставляете его после успешного пинга
Код: set WSHShell = CreateObject("WScript.Shell")
sIP="172.17.0.3"
Set objExec = WSHShell.Exec("nbtstat -A " & sIP)
CompName = objExec.StdOut.ReadAll
NetBiosName = trim(mid(CompName,instrRev (CompName,"--")+8,16))
ну вот кусок vbs которого вам не хватало, вставляете его после успешного пинга
Код: set WSHShell = CreateObject("WScript.Shell")
sIP="172.17.0.3"
Set objExec = WSHShell.Exec("nbtstat -A " & sIP)
CompName = objExec.StdOut.ReadAll
NetBiosName = trim(mid(CompName,instrRev (CompName,"--")+8,16))
Alukardd
Это всё понятно, хотелось бы резолвить через WMI или API
юзать в цикле шелл не есть хорошо.
Это всё понятно, хотелось бы резолвить через WMI или API
юзать в цикле шелл не есть хорошо.
YURETS777
у шото я не понял... а что вы от wmi хотите? цикл значит на пинг вы гонять собираетесь, а имя из воздуха материализовать хотите?
у шото я не понял... а что вы от wmi хотите? цикл значит на пинг вы гонять собираетесь, а имя из воздуха материализовать хотите?
YURETS777 юзать в цикле шелл не есть хорошо а как на счет [more=такова]
Set WshNetwork = WScript.CreateObject("WScript.Network")
WScript.Echo "Computer Name = " & WshNetwork.ComputerName
[/more]способа ?
Set WshNetwork = WScript.CreateObject("WScript.Network")
WScript.Echo "Computer Name = " & WshNetwork.ComputerName
[/more]способа ?
Alukardd
Цитата:
Нашел здесь http://forum.ru-board.com/topic.cgi?forum=62&bm=1&topic=21297&start=1760
Цитата:
спасибо
Цитата:
net share /? - как ограничить права - хз, поищите на просторах инета...
Нашел здесь http://forum.ru-board.com/topic.cgi?forum=62&bm=1&topic=21297&start=1760
Цитата:
net share MyFolder=T:\xxx\folder /GRANT:user1,FULL /GRANT:Everyone,READ
ключик /GRANT есть только в net share /? Висты+, XP не понимает
спасибо
Alukardd
Цитата:
Спасибо. Там помогли. А я параллельно настрочил на VBS
Код: ' Выводит данные о сервис-паке и свободном месте диска С
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOSes = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each objOS in colOSes
Wscript.Echo "Computer Name: " & objOS.CSName
WScript.Echo "Service Pack: " & objOS.ServicePackMajorVersion & "." & _
objOS.ServicePackMinorVersion
Next
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOSes = objWMIService.ExecQuery("select * from Win32_LogicalDisk Where DeviceID = 'C:'")
For Each objOS in colOSes
Wscript.Echo "Free Space on " & objOS.DeviceID & " " & Round(objOS.FreeSpace / 1073741824, 1) & " Gb (" & objOS.FileSystem & ")"
Next
Цитата:
Задачи на bat-файлах - здесь вам его быстро помогут наклепать
Спасибо. Там помогли. А я параллельно настрочил на VBS
Код: ' Выводит данные о сервис-паке и свободном месте диска С
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOSes = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each objOS in colOSes
Wscript.Echo "Computer Name: " & objOS.CSName
WScript.Echo "Service Pack: " & objOS.ServicePackMajorVersion & "." & _
objOS.ServicePackMinorVersion
Next
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOSes = objWMIService.ExecQuery("select * from Win32_LogicalDisk Where DeviceID = 'C:'")
For Each objOS in colOSes
Wscript.Echo "Free Space on " & objOS.DeviceID & " " & Round(objOS.FreeSpace / 1073741824, 1) & " Gb (" & objOS.FileSystem & ")"
Next
cluster
Цитата:
что касается меня, то я больше склонен к батникам, ну не нравится мне vbs, несмотря на то, что он функциональнее...
OnePrg, я справку на XP смотрел...
Цитата:
Спасибо. Там помогли. А я параллельно настрочил на VBSда я зашел проверить, как вы там
что касается меня, то я больше склонен к батникам, ну не нравится мне vbs, несмотря на то, что он функциональнее...
OnePrg, я справку на XP смотрел...
YNY
Не такой вариант не подойдёт, я с сервера сканирую сетку, мне нужно вывести список станций которые еще в сети.
Alukardd
nbstat выдает такое:
Office LAN:
Адрес IP узла: [192.168.1.42] Код области: []
Не такой вариант не подойдёт, я с сервера сканирую сетку, мне нужно вывести список станций которые еще в сети.
Alukardd
nbstat выдает такое:
Office LAN:
Адрес IP узла: [192.168.1.42] Код области: []
YURETS777 ну а [more=вот такой]
strComputer = "192.168.1.4"
NBTHN(strComputer)
Sub NBTHN(ip)
Set objWMIService = GetObject( "winmgmts:\\" & strComputer & "\root\cimv2")
Set NetworkSet = objWMIService.ExecQuery ("Select DNSHostName from
Win32_NetworkAdapterConfiguration")
For Each NetworkC in NetworkSet
If Not IsNull(NetworkC.DNSHostName) Then
msgbox NetworkC.DNSHostName
exit for
end if
Next
End Sub
[/more]. Только учти что работает не быстро + обработка ошибки отсутствует, т.к. ты всеж для отвечающих на пинг будешь использовать
strComputer = "192.168.1.4"
NBTHN(strComputer)
Sub NBTHN(ip)
Set objWMIService = GetObject( "winmgmts:\\" & strComputer & "\root\cimv2")
Set NetworkSet = objWMIService.ExecQuery ("Select DNSHostName from
Win32_NetworkAdapterConfiguration")
For Each NetworkC in NetworkSet
If Not IsNull(NetworkC.DNSHostName) Then
msgbox NetworkC.DNSHostName
exit for
end if
Next
End Sub
[/more]. Только учти что работает не быстро + обработка ошибки отсутствует, т.к. ты всеж для отвечающих на пинг будешь использовать
YURETS777
ну во первых у меня все нормально работает, я проверял... После этих строк идет таблица NetBIOS еще с 5строками... куды она у вас подевалась я хз...
ну во первых у меня все нормально работает, я проверял... После этих строк идет таблица NetBIOS еще с 5строками... куды она у вас подевалась я хз...
Alukardd, у меня все нормально работает у меня в виртуальной машине тоже не робит "как нада" если не верный IP указать)
Здрасти всем! кто нибудь знает как в авторане к флехе сделать параметр для скрытия некоторых папок, которые на ней находятся, чисто чтобы никто не трогал, папки нужные на моей системе некоторые операции автоматом исполняют, мне это чтоб кто попало не стёр нужное, но при этом надо именно при инициализации флехи сделать их скрытыми.
firsteducation
зачем? почему так просто не скрыть? какой в этом толк если при каждом втыкании они будут скрываться?
вообще вызываешь из autorun.inf батник, а из него уже меняешь атрибуты папок своих... хотя можно наверное и cmd.exe вызвать с аргументами прямо из autorun...
зачем? почему так просто не скрыть? какой в этом толк если при каждом втыкании они будут скрываться?
вообще вызываешь из autorun.inf батник, а из него уже меняешь атрибуты папок своих... хотя можно наверное и cmd.exe вызвать с аргументами прямо из autorun...
Alukardd
Получилось, всё работает, я даже пинг переписал под шел, только на XP почему-то окна пинга развернуты и активны, как бы их скрыть.
Скан сети из 4-х диапазонов по 256 адресов длится пол часа.
Вот как выглядит рабочий код:
[more]
Код:
'================================================================================
'Option Explicit
Const NETWORK1 = "192.168.12."
Const NETWORK2 = "192.168.150."
Const NETWORK3 = "192.168.154."
Const NETWORK4 = "192.168.61."
Set objFSO = CreateObject("Scripting.FileSystemObject")
destsd = "pingz_test2.txt"
Dim i
Dim strAddress, pingrez, nbnme, flnmm
Do '┴хёъюэхўэ√щ Ўшъы
dtNow = Time()
dtNow2 = Date()
currtme = Right("00" & CStr(Hour(dtNow)), 2) & ":" & Right("00" & CStr(Minute(dtNow)), 2)
currtme2 = Right("00" & CStr(Hour(dtNow)), 2) & "_" & Right("00" & CStr(Minute(dtNow)), 2)
currdte = Right("00" & CStr(Day(dtNow2)), 2) & "_" & Right("00" & CStr(Month(dtNow2)), 2) & "_" & Year(dtNow2)
If (currtme = "02:00") or (currtme = "08:00") or (currtme = "13:00")or (currtme = "18:00") Then
'If True Then
flnmm = currdte & "_" & currtme2 & ".txt"
Set objTextFile = objFSO.CreateTextFile(flnmm, True)
'-------------------------------------------------------------------------------
For i = 1 To 254
strAddress = NETWORK1 & i
pingrez = fnPing( strAddress )
If pingrez <> "-1" Then
nbnme = fnNbname(strAddress)
objTextFile.WriteLine strAddress & vbtab & pingrez & vbtab & nbnme
End If
Next
'-------------------------------------------------------------------------------
For i = 1 To 254
strAddress = NETWORK2 & i
pingrez = fnPing( strAddress )
If pingrez <> "-1" Then
nbnme = fnNbname(strAddress)
objTextFile.WriteLine strAddress & vbtab & pingrez & vbtab & nbnme
End If
Next
'-------------------------------------------------------------------------------
For i = 1 To 254
strAddress = NETWORK3 & i
pingrez = fnPing( strAddress )
If pingrez <> "-1" Then
nbnme = fnNbname(strAddress)
objTextFile.WriteLine strAddress & vbtab & pingrez & vbtab & nbnme
End If
Next
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
For i = 1 To 254
strAddress = NETWORK4 & i
pingrez = fnPing( strAddress )
If pingrez <> "-1" Then
nbnme = fnNbname(strAddress)
objTextFile.WriteLine strAddress & vbtab & pingrez & vbtab & nbnme
End If
Next
'-------------------------------------------------------------------------------
objTextFile.Close
'WScript.Quit 0
End If
WScript.Sleep 10000
Loop While True
'-------------------------------------------------------------------------------
Function fnPing(strIp)
set WSHShell = CreateObject("WScript.Shell")
Set objExec = WSHShell.Exec("ping -n 1 " & strIp)
pngrzlt = objExec.StdOut.ReadAll
If InStr(pngrzlt, "TTL=") Then
posss1 = instr(pngrzlt,"время")+5
posss2 = instr(pngrzlt,"TTL=")
difff = posss2 - posss1
fnPing = trim(mid(pngrzlt,posss1,difff))
Else
fnPing = "-1"
End If
End Function
'================================================================================
Function fnNbname( strIp )
set WSHShell = CreateObject("WScript.Shell")
Set objExec = WSHShell.Exec("nbtstat -A " & strIp)
CompName = objExec.StdOut.ReadAll
If InStr(CompName, "Узел не найден.") Then
fnNbname = "Узел не найден"
Else
fnNbname = trim(mid(CompName,instrRev (CompName,"--")+8,16))
End If
End Function
'================================================================================
Получилось, всё работает, я даже пинг переписал под шел, только на XP почему-то окна пинга развернуты и активны, как бы их скрыть.
Скан сети из 4-х диапазонов по 256 адресов длится пол часа.
Вот как выглядит рабочий код:
[more]
Код:
'================================================================================
'Option Explicit
Const NETWORK1 = "192.168.12."
Const NETWORK2 = "192.168.150."
Const NETWORK3 = "192.168.154."
Const NETWORK4 = "192.168.61."
Set objFSO = CreateObject("Scripting.FileSystemObject")
destsd = "pingz_test2.txt"
Dim i
Dim strAddress, pingrez, nbnme, flnmm
Do '┴хёъюэхўэ√щ Ўшъы
dtNow = Time()
dtNow2 = Date()
currtme = Right("00" & CStr(Hour(dtNow)), 2) & ":" & Right("00" & CStr(Minute(dtNow)), 2)
currtme2 = Right("00" & CStr(Hour(dtNow)), 2) & "_" & Right("00" & CStr(Minute(dtNow)), 2)
currdte = Right("00" & CStr(Day(dtNow2)), 2) & "_" & Right("00" & CStr(Month(dtNow2)), 2) & "_" & Year(dtNow2)
If (currtme = "02:00") or (currtme = "08:00") or (currtme = "13:00")or (currtme = "18:00") Then
'If True Then
flnmm = currdte & "_" & currtme2 & ".txt"
Set objTextFile = objFSO.CreateTextFile(flnmm, True)
'-------------------------------------------------------------------------------
For i = 1 To 254
strAddress = NETWORK1 & i
pingrez = fnPing( strAddress )
If pingrez <> "-1" Then
nbnme = fnNbname(strAddress)
objTextFile.WriteLine strAddress & vbtab & pingrez & vbtab & nbnme
End If
Next
'-------------------------------------------------------------------------------
For i = 1 To 254
strAddress = NETWORK2 & i
pingrez = fnPing( strAddress )
If pingrez <> "-1" Then
nbnme = fnNbname(strAddress)
objTextFile.WriteLine strAddress & vbtab & pingrez & vbtab & nbnme
End If
Next
'-------------------------------------------------------------------------------
For i = 1 To 254
strAddress = NETWORK3 & i
pingrez = fnPing( strAddress )
If pingrez <> "-1" Then
nbnme = fnNbname(strAddress)
objTextFile.WriteLine strAddress & vbtab & pingrez & vbtab & nbnme
End If
Next
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
For i = 1 To 254
strAddress = NETWORK4 & i
pingrez = fnPing( strAddress )
If pingrez <> "-1" Then
nbnme = fnNbname(strAddress)
objTextFile.WriteLine strAddress & vbtab & pingrez & vbtab & nbnme
End If
Next
'-------------------------------------------------------------------------------
objTextFile.Close
'WScript.Quit 0
End If
WScript.Sleep 10000
Loop While True
'-------------------------------------------------------------------------------
Function fnPing(strIp)
set WSHShell = CreateObject("WScript.Shell")
Set objExec = WSHShell.Exec("ping -n 1 " & strIp)
pngrzlt = objExec.StdOut.ReadAll
If InStr(pngrzlt, "TTL=") Then
posss1 = instr(pngrzlt,"время")+5
posss2 = instr(pngrzlt,"TTL=")
difff = posss2 - posss1
fnPing = trim(mid(pngrzlt,posss1,difff))
Else
fnPing = "-1"
End If
End Function
'================================================================================
Function fnNbname( strIp )
set WSHShell = CreateObject("WScript.Shell")
Set objExec = WSHShell.Exec("nbtstat -A " & strIp)
CompName = objExec.StdOut.ReadAll
If InStr(CompName, "Узел не найден.") Then
fnNbname = "Узел не найден"
Else
fnNbname = trim(mid(CompName,instrRev (CompName,"--")+8,16))
End If
End Function
'================================================================================
СпасибоAlukardd, я нечто типа твоего совета сделал: настрочил vbs скрипт, который в скрытом режиме пускает батник, который скрывает папки, вот и всё!
YURETS777> Получилось, всё работает... )))))))) Ну ты приколист 4 раза одно и тоже для каджой сетки сделал вместо того, чтоб написать процедуру)))))))))))
YNY
копипаст рулит, вложенность скорости не увеличит.
Так что делать с этим:
копипаст рулит, вложенность скорости не увеличит.
Так что делать с этим:
YURETS777
Цитата:
Цитата:
Так что делать с этимискать в инете решение проблемы... nbtstat должен работать нормально, или мб вы его как-то по особенному вызываете?
эх...
YURETS777
Вызов из cmd
Ну или "cmd /c nbtstat -a"
Вызов из cmd
Ну или "cmd /c nbtstat -a"
Alukardd
Не, у меня сначала был прописан CScript по умолчанию, выполнялось как на скриншоте, потом прописал wscript //H:Wscript , вроде запускается wscript, но консольные окна почему-то активны и развернуты
ЗЫ
Этот косяк наблюдается на одной XP-шной станции, пробовал запускать скрипт на сервере (Windows Server 2003 SP2 R2) на нем всё ОК.
Не, у меня сначала был прописан CScript по умолчанию, выполнялось как на скриншоте, потом прописал wscript //H:Wscript , вроде запускается wscript, но консольные окна почему-то активны и развернуты
ЗЫ
Этот косяк наблюдается на одной XP-шной станции, пробовал запускать скрипт на сервере (Windows Server 2003 SP2 R2) на нем всё ОК.
Ребята, кто нибудь знает как мне файлом придать свойства папке в которой он находится, буду очень признателен!
firsteducation
xcacls справка - ищем слова "наследование"
xcacls справка - ищем слова "наследование"
Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
Предыдущая тема: BackUp Win2003Serer
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.