либо сначало завершать сеанс пользователя, а уже потома вырубать комп)
» Автоматизация администрирования. Часть 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, истории становления российского интернета. Сделано для людей.