#powershell #service
#powershell #Обслуживание
Вопрос:
Мне нужно создать RPC для получения и изменения статусов служб на основе поля «Войти как», видимого в пользовательском интерфейсе служб. Команда Get-Service предоставляет мне только статус, имя и имя_исплея, но мне нужно больше информации. Должен ли я использовать модификатор с Get-Service или есть другой способ решения проблемы?
Комментарии:
1. В следующий раз попробуйте использовать Google, прежде чем отправлять вопрос. На первой странице приведено множество примеров… devblogs.microsoft.com/scripting /…
2. Привет, Дуг. Я сделал Google об этом, прежде чем задавать вопрос здесь, хотя, к сожалению, я пропустил это и был обескуражен, просмотрев документы MS для Get-Service. Однако спасибо за дополнительный ресурс! С этого момента обязательно обратитесь к devblogs.
Ответ №1:
«Get-Service» предоставляет вам гораздо больше, чем вы видите по умолчанию. Многие командлеты имеют определения форматирования и по умолчанию отображают только определенные свойства.
Вы можете увидеть больше на верхнем уровне (= прямые участники), используя «Format-List * -Force»
PS> Get-Service -Name 'BITS' | fl * -Force
UserName : LocalSystem
Description : Transfers files in the background using idle network bandwidth. If the service is disabled, then any applications that depend on BITS, such as Windows Update or MSN
Explorer, will be unable to automatically download programs and other information.
DelayedAutoStart : True
BinaryPathName : C:WINDOWSSystem32svchost.exe -k netsvcs -p
StartupType : Manual
Name : BITS
RequiredServices : {RpcSs}
CanPauseAndContinue : False
CanShutdown : False
CanStop : False
DisplayName : Background Intelligent Transfer Service
DependentServices : {}
MachineName : .
ServiceName : BITS
ServicesDependedOn : {RpcSs}
StartType : Manual
ServiceHandle :
Status : Stopped
ServiceType : Win32ShareProcess
Site :
Container :
Но есть много косвенных (вложенных) членов. Вы можете обнаружить их, используя «Get-Member» или используя их (например $service.RequiredServices
).
PS> $service | Get-Member -MemberType Property
TypeName: System.Service.ServiceController#StartupType
Name MemberType Definition
---- ---------- ----------
BinaryPathName Property System.String {get;set;}
CanPauseAndContinue Property bool CanPauseAndContinue {get;}
CanShutdown Property bool CanShutdown {get;}
CanStop Property bool CanStop {get;}
Container Property System.ComponentModel.IContainer Container {get;}
DelayedAutoStart Property System.Boolean {get;set;}
DependentServices Property System.ServiceProcess.ServiceController[] DependentServices {get;}
Description Property System.String {get;set;}
DisplayName Property string DisplayName {get;set;}
MachineName Property string MachineName {get;set;}
ServiceHandle Property System.Runtime.InteropServices.SafeHandle ServiceHandle {get;}
ServiceName Property string ServiceName {get;set;}
ServicesDependedOn Property System.ServiceProcess.ServiceController[] ServicesDependedOn {get;}
ServiceType Property System.ServiceProcess.ServiceType ServiceType {get;}
Site Property System.ComponentModel.ISite Site {get;set;}
StartType Property System.ServiceProcess.ServiceStartMode StartType {get;}
StartupType Property Microsoft.PowerShell.Commands.ServiceStartupType {get;set;}
Status Property System.ServiceProcess.ServiceControllerStatus Status {get;}
UserName Property System.String {get;set;}
Здесь расширенное представление (до 3-го уровня; их гораздо больше)
[ServiceController] BITS
> UserName : LocalSystem
> Description : Transfers files in the background using idle network bandwidth. If the service is disabled, then any applications that depend on BITS, such as Windows Update or MSN Explorer, will be unable to automatically download programs and other information.
> DelayedAutoStart : True
> BinaryPathName : C:WINDOWSSystem32svchost.exe -k netsvcs -p
> StartupType : [ServiceStartupType] Manual
> > value__ : 3
> Name : BITS
> RequiredServices : @[ServiceController[]]
> > [0] <RequiredServices> : [ServiceController] RpcSs
> > > Name : RpcSs
> > > RequiredServices : @{[ServiceController[]]} ~[0..2] RpcEptMapper , DcomLaunch
> > > CanPauseAndContinue : False
> > > CanShutdown : False
> > > CanStop : False
> > > DisplayName : Remote Procedure Call (RPC)
> > > DependentServices :
> > > MachineName : .
> > > ServiceName : RpcSs
> > > ServicesDependedOn : @{[ServiceController[]]} ~[0..2] RpcEptMapper , DcomLaunch
> > > StartType : {[ServiceStartMode]} Automatic
> > > ServiceHandle :
> > > Status : {[ServiceControllerStatus]} Running
> > > ServiceType : {[ServiceType]} Win32ShareProcess
> > > Site :
> > > Container :
> CanPauseAndContinue : False
> CanShutdown : False
> CanStop : False
> DisplayName : Background Intelligent Transfer Service
> DependentServices : @[ServiceController[]]
> MachineName : .
> ServiceName : BITS
> ServicesDependedOn : @[ServiceController[]]
> > [0] <ServicesDependedOn> : [ServiceController] RpcSs
> > > Name : RpcSs
> > > RequiredServices : @{[ServiceController[]]} ~[0..2] RpcEptMapper , DcomLaunch
> > > CanPauseAndContinue : False
> > > CanShutdown : False
> > > CanStop : False
> > > DisplayName : Remote Procedure Call (RPC)
> > > DependentServices :
> > > MachineName : .
> > > ServiceName : RpcSs
> > > ServicesDependedOn : @{[ServiceController[]]} ~[0..2] RpcEptMapper , DcomLaunch
> > > StartType : {[ServiceStartMode]} Automatic
> > > ServiceHandle :
> > > Status : {[ServiceControllerStatus]} Running
> > > ServiceType : {[ServiceType]} Win32ShareProcess
> > > Site :
> > > Container :
> StartType : [ServiceStartMode] Manual
> > value__ : 3
> ServiceHandle :
> Status : [ServiceControllerStatus] Stopped
> > value__ : 1
> ServiceType : [ServiceType] Win32ShareProcess
> > value__ : 32
> Site :
> Container :
---------------------------------------------------------------------------