标签: get-wmiobject

Get-WMIObject \ Get-CimInstance 实际上是做什么的?

我正在开发一个新的 WMI 实例提供程序,但遇到了一些麻烦。我能够使用regsvr32.exe. 该regsvr32应用程序调用我的实现DllRegisterServer并创建以下注册表项和值:

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000001-0000-0000-0000-00000000000F}                : (default)      = "WMI Provider"
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000001-0000-0000-0000-00000000000F}\InprocServer32 : (default)      = "C:\MyWmiProvider.dll"
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000001-0000-0000-0000-00000000000F}\InprocServer32 : ThreadingModel = Neutral
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000001-0000-0000-0000-00000000000F}\Version        : (default)      = 1.0.0
Run Code Online (Sandbox Code Playgroud)

(哪里{00000001-0000-0000-0000-00000000000F}只是一个测试类 ID(CLSID))

我也能够成功地添加在我的定义我的WMI类定义中号anaged Ø bject ˚F使用ORMAT(MOF)文件mofcomp.exe。我可以通过运行以下命令来验证我的定义是否存在于 WMI 存储库中:

Get-CimClass -Namespace "root/MyNamespace" | Where-Object CimClassName -like "MyClass_*"
Run Code Online (Sandbox Code Playgroud)

这是我的 MOF 文件的示例:

#pragma namespace("\\\\.\\root\\MyNamespace")
#pragma autorecover

instance of __Win32Provider as $P
{
    Name = "MyWmiProvider";
    ClsId = "{00000001-0000-0000-0000-00000000000F}";
};

instance of __InstanceProviderRegistration
{
    Provider = …
Run Code Online (Sandbox Code Playgroud)

com powershell wmi visual-c++ get-wmiobject

17
推荐指数
1
解决办法
850
查看次数

如何编写对象的单个属性的值?

这是我当前的脚本的样子:

$cpu = Get-WmiObject win32_processor | select LoadPercentage
logwrite $cpu #this fuction writes $cpu into a .txt file
Run Code Online (Sandbox Code Playgroud)

该文件的输出为:

@{LoadPercentage=4}
Run Code Online (Sandbox Code Playgroud)

我希望它只是数字,以便我进行计算。

powershell logfile select-object get-wmiobject

5
推荐指数
2
解决办法
1394
查看次数

如何使用 Get-WmiObject 过滤进程“命令行”

有没有办法-Filter使用 WMI 查询语言 (WQL) 指定 Get-WmiObject cmdlet的参数,以根据用于调用进程的“命令行”进行过滤?“命令行”是指 Windows 任务管理器的“进程”选项卡中显示的“命令行”。

我想获取一个进程 id 数组,其中命令行包含 string *Dev_SW*。我不能使用名称,因为会有许多不等于*Dev_SW*过滤器的同名进程在运行。

powershell powershell-2.0 windows-7 get-wmiobject

5
推荐指数
1
解决办法
4481
查看次数

多个Get-WmiObject调用的单个连接

以下脚本从我提供的每台计算机成功获取制造商,型号,序列号和操作系统hostnames.txt.但是,它很慢,因为它必须连接到每台计算机上的WMI三次.

$OS = Get-WmiObject Win32_OperatingSystem -ComputerName $Computer
$CS = Get-WmiObject Win32_ComputerSystem -ComputerName $Computer
$BIOS = Get-WmiObject Win32_Bios -ComputerName $Computer
Run Code Online (Sandbox Code Playgroud)

使用PowerShell,如何连接到远程计算机的WMI一次并使用相同的连接执行三个查询?

$Array = @() ## Create Array to hold the Data
$Computers = Get-Content -Path .\hostnames.txt

foreach ($Computer in $Computers)
{

    $Result = "" | Select HostPS,Mfg,Model,Serial,OS

    $Result.HostPS = $Computer
    $ErrorActionPreference = "SilentlyContinue" ## Don't output errors for offline computers
    $OS = Get-WmiObject Win32_OperatingSystem -ComputerName $Computer

    $CS = Get-WmiObject Win32_ComputerSystem -ComputerName $Computer

    $BIOS = Get-WmiObject Win32_Bios -ComputerName $Computer
    $ErrorActionPreference …
Run Code Online (Sandbox Code Playgroud)

powershell wmi get-wmiobject

3
推荐指数
1
解决办法
428
查看次数

在远程Windows服务器上创建本地用户并添加到管理员组

我创建了 PowerShell 脚本来在远程 Windows Server 上创建用户并添加到管理员组:

\n\n
$Computer = Read-Host "Computer name:"\n$UserName = Read-Host "User name:"\n$Password = Read-Host "Password" -AsSecureString\n$AdminGroup = [ADSI]"WinNT://$Computer/Administrator,group"\n$User = [ADSI]"WinNT://$Computer/$UserName,user"\n$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $UserName, (ConvertTo-SecureString $Password -AsPlainText \xe2\x80\x93Force)\n$User.SetPassword($Cred.GetNetworkCredential().Password)\n$AdminGroup.Add($User.Path)\n
Run Code Online (Sandbox Code Playgroud)\n\n

它给了我以下错误:

\n\n
\n检索成员“SetPassword”时发生以下异常:“\n找不到用户名。\n在 C:\\test1.ps1:7 char:18\n+ $User.SetPassword <<<< ($Cred. GetNetworkCredential().Password)\n + CategoryInfo : NotSpecified: (:) [], ExtendedTypeSystemException\n + ExcellentQualifiedErrorId : CatchFromBaseGetMember\n\n检索成员“Add”时发生以下异常:“指定的\n本地组不存在。 \n在 C:\\test1.ps1:8 字符:16\n+ $AdminGroup.Add <<<< ($User.Path)\n + CategoryInfo : NotSpecified: (:) [], ExtendedTypeSystemException\n + ExcellentQualifiedErrorId : CatchFromBaseGetMember \n
\n

powershell wmi powershell-remoting get-wmiobject

2
推荐指数
1
解决办法
5053
查看次数

Get-WmiObject - 在 -filter 中使用 OR 运算符?

我必须做一些 powershell 脚本修改,但我无法在我的开发机器上正确测试。

这就是为什么我想知道我是否可以ORGet-WmiObject -filter操作中使用 -Operator?

目前我们使用

(Get-WmiObject -Class Win32_Product -Filter "Name like 'ApplicationName1 Client%'" ...).Uninstall()
Run Code Online (Sandbox Code Playgroud)

但最近我们将应用程序的名称从 重命名ApplicationName1NewName. 这就是为什么我想添加另一个条件,如下所示:

(Get-WmiObject -Class Win32_Product -Filter "Name like 'ApplicationName1 Client%' OR Name like 'NewName Client%'" ...).Uninstall()
Run Code Online (Sandbox Code Playgroud)

我的问题是:

这是过滤器的有效语法还是会引发异常/给出错误?如果出现错误,您将如何执行此操作?

powershell get-wmiobject

1
推荐指数
1
解决办法
1万
查看次数