tl; dr пытается автоматизировать привязку драйвера / адаптера / службы адаптера с помощью PowerShell / (Set | Get) -NetAdapterBinding / PnPUtil / nvspbind
Я изучаю автоматическую установку драйвера dummynet на сетевой адаптер на Windows Server 2012 и 2012 R2.
Мне нужно автоматизировать эти шаги:
Pull up the properties for the Network Adapter that is used to access the Internet
Click "Install"
Select "Service" and click "Add"
Click "Have Disk" and navigate to webpagetest\dummynet
Select the ipfw+dummynet service (and click through any warnings about the driver being unsigned)
Я считаю, что могу добавить файлы INF драйвера в хранилище драйверов с помощью утилиты PnPUtil.
Я изучил модули PowerShell (Set | Get) -NetAdapterBinding и не могу заставить драйвер правильно зарегистрироваться.
Вот результат Get-NetAdapterBinding после того, как я установил его вручную:
PS C:\Users\Administrator> Get-NetAdapterBinding public0 -DisplayName ipfw+dummynet | format-list
Caption : MSFT_NetAdapterBindingSettingData 'Citrix PV Network Adapter #0'
Description : ipfw+dummynet
ElementName : unipi_ipfw
InstanceID : {906E5591-5C6C-4D07-BB8D-BA387BA4B646}::unipi_ipfw
InterfaceDescription : Citrix PV Network Adapter #0
Name : public0
Source : 1
SystemName : ComputerName
BindName : Ipfw
Characteristics : 17424
ComponentClassGuid : {4D36E974-E325-11CE-BFC1-08002BE10318}
ComponentClassName : Filter
ComponentID : unipi_ipfw
DisplayName : ipfw+dummynet
Enabled : True
PSComputerName :
ifAlias : public0
InterfaceAlias : public0
ifDesc : Citrix PV Network Adapter #0
Get-NetAdapterBinding -Name public -DisplayName ipfw+dummynet | GM
TypeName: Microsoft.Management.Infrastructure.CimInstance#ROOT/StandardCimv2
/MSFT_NetAdapterBindingSettingData
Name MemberType Definition
---- ---------- ----------
ifAlias AliasProperty ifAlias = Name
ifDesc AliasProperty ifDesc = InterfaceDescription
InterfaceAlias AliasProperty InterfaceAlias = Name
Clone Method System.Object ICloneable.Clone()
Dispose Method void Dispose(), void IDisposable.Dis...
Equals Method bool Equals(System.Object obj)
GetCimSessionComputerName Method string GetCimSessionComputerName()
GetCimSessionInstanceId Method guid GetCimSessionInstanceId()
GetHashCode Method int GetHashCode()
GetObjectData Method void GetObjectData(System.Runtime.Se...
GetType Method type GetType()
ToString Method string ToString()
BindName Property string BindName {get;}
Caption Property string Caption {get;set;}
Characteristics Property uint32 Characteristics {get;}
ComponentClassGuid Property string ComponentClassGuid {get;}
ComponentClassName Property string ComponentClassName {get;}
ComponentID Property string ComponentID {get;}
Description Property string Description {get;set;}
DisplayName Property string DisplayName {get;}
ElementName Property string ElementName {get;set;}
Enabled Property bool Enabled {get;set;}
InstanceID Property string InstanceID {get;set;}
InterfaceDescription Property string InterfaceDescription {get;}
Name Property string Name {get;}
PSComputerName Property string PSComputerName {get;}
Source Property uint32 Source {get;}
SystemName Property string SystemName {get;}
Вот моя попытка Set-NetAdapterBinding с аргументами, задокументированными для этого модуля:
Set-NetAdapterBinding -Name public0 -Component unipi_ipfw -Enabled $True
Set-NetAdapterBinding : No matching MSFT_NetAdapterBindingSettingData objects
found by CIM query for instances of the
ROOT/StandardCimv2/MSFT_NetAdapterBindingSettingData class on the CIM server:
SELECT * FROM MSFT_NetAdapterBindingSettingData WHERE ((Name LIKE 'public0'))
AND ((ComponentID LIKE 'unipi[_]ipfw')). Verify query parameters and retry.
At line:1 char:1
+ Set-NetAdapterBinding -Name public0 -Component unipi_ipfw -Enabled $True
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (MSFT_NetAdapterBindingSettingDa
ta:String) [Set-NetAdapterBinding], CimJobException
+ FullyQualifiedErrorId : CmdletizationQuery_NotFound,Set-NetAdapterBindin
g
Пытаясь найти лучший способ сделать это, я также наткнулся на ссылку nvspbind и попытался использовать этот инструмент для добавления драйвера. К сожалению, я тоже не могу связать это с адаптером. Утилита просто продолжает выкладывать информацию об использовании.
Как лучше всего решить эту проблему с помощью PowerShell?