下午好,我相信這會讓你們一切都很好。
我正在學習 powershell,如果有人可以幫助我解決以下問題,我將不勝感激:使用以下 wmic cmd 時,我無法僅獲得輸出:
wmic OS Get DataExecutionPrevention_SupportPolicy
這就是我從那條線上得到的:
PS C:\_Admin_RPC> wmic OS Get DataExecutionPrevention_SupportPolicy
DataExecutionPrevention_SupportPolicy
2
我已經嘗試了很多東西,但它不起作用,如果有人可以幫助我,我將不勝感激。
我打算做的是將值 (2) 保存在一個變數中,然后如果該值是我正在尋找的值,則使用 write-output 回傳 $true。
感謝你并致以真誠的問候。
和平
uj5u.com熱心網友回復:
當您使用 PowerShell 時,最好使用本機 PowerShell cmdlet 或 .NET 類,因為您獲取的是物件而不是字串值。這使得訪問某些值變得更加容易,可以提供進一步處理的方法等。
所以回到你的問題,原則上你可以這樣做:
wmic 在這種情況下回傳一個字串陣列,您要查找的值是第三個元素:
#get the value
(wmic OS Get DataExecutionPrevention_SupportPolicy)[2]
#get the value and store it in a variable
$value = (wmic OS Get DataExecutionPrevention_SupportPolicy)[2]
正如 js2010 已經在 PowerShell 上指出的那樣,有get-wmiobject一個相當于 wmic 的 cmdlet。但是這個已經被替換了get-cimInstance。所以PowerShell的方式是:
#Get all properties from class
$value = Get-CimInstance -ClassName win32_operatingsystem
#Display whole object
$value | fl *
#Access specific value
$value.'DataExecutionPrevention_SupportPolicy'
#For further optimization query only attributes needed instead of all
$value = Get-CimInstance -query "Select DataExecutionPrevention_SupportPolicy from win32_operatingsystem"
$value.'DataExecutionPrevention_SupportPolicy'
如果屬性具有預期值,您想要true或回傳。false所以我們不需要存盤那個值,我們可以簡單地查詢是否設定了期望值,然后回傳trueor false:
#Query for DataExecutionPrevention_SupportPolicy = 2 and return true or false
If (Get-CimInstance -query "Select DataExecutionPrevention_SupportPolicy from win32_operatingsystem where DataExecutionPrevention_SupportPolicy = 2"){
#output on screen only
write-host $true
}
Else {
#output on screen only
write-host $false
}
如果您還想知道設定了哪個值,可以執行以下操作:
#Query for DataExecutionPrevention_SupportPolicy, create object and write csv
$obj = Get-CimInstance -query "Select DataExecutionPrevention_SupportPolicy from win32_operatingsystem"
If ($obj.'DataExecutionPrevention_SupportPolicy' -eq 2){
$result = [PSCustomObject]@{
'DataExecutionPrevention_SupportPolicy' = $obj.'DataExecutionPrevention_SupportPolicy'
'isExpectedValue' = $true
}
}
Else {
$result = [PSCustomObject]@{
'DataExecutionPrevention_SupportPolicy' = $obj.'DataExecutionPrevention_SupportPolicy'
'isExpectedValue' = $false
}
}
#write result to disk as csv
$result | export-csv [path] -Delimiter ";" -Encoding:utf8 -NoClobber -NoTypeInformation
uj5u.com熱心網友回復:
js2010 和 Toni 都回答了我的問題。
然而,最好的答案是托尼的,因為他考慮到了我的要求,并用他的解釋把它們帶到了另一個層次。
最后,這是我根據我面臨的場景使用的解決方案:
$value = Get-CimInstance -ClassName win32_operatingsystem | Select-Object -Property 'DataExecutionPrevention_SupportPolicy'
$value = $value.DataExecutionPrevention_SupportPolicy
if($value -eq 1){
Write-Output $true
}
非常感謝你們的幫助和支持。
和平
uj5u.com熱心網友回復:
你可以在 wmic 中做的任何事情都可以在 powershell 中做。
WMIC wmi 類別名:
(或在 powershell “get-wmiobject -n root\cli msft_clialias”中,因為別名本身是 wmi 類別名)
我對它們進行了分類。這些可能是最有用的 wmi 類(除了 win32_userprofile)。
wmic alias get friendlyname,target
FriendlyName Target
Alias Select * from Msft_CliAlias
BIOS Select * from Win32_BIOS
BaseBoard Select * from Win32_BaseBoard
BootConfig Select * from Win32_BootConfiguration
CDROM Select * from Win32_CDROMDrive
CPU Select * from WIN32_PROCESSOR
CSProduct Select * from Win32_ComputerSystemProduct
ComputerSystem Select * from Win32_ComputerSystem
DCOMAPP Select * from WIN32_DCOMApplication
DESKTOP Select * from WIN32_DESKTOP
DMAChannel Select * from Win32_DMAChannel
DataFile Select * from CIM_DataFile
DesktopMonitor Select * from WIN32_DESKTOPMONITOR
DeviceMemoryAddress Select * from Win32_DeviceMemoryAddress
DiskDrive Select * from Win32_DiskDrive
DiskQuota Select * from Win32_DiskQuota
Environment Select * from Win32_Environment
FSDir Select * from Win32_Directory
Group Select * from Win32_Group
IDECONTROLLER Select * from Win32_IDEController
IRQ Select * from Win32_IRQResource
Job Select * from Win32_ScheduledJob
LOGON Select * from Win32_LogonSession
LoadOrder Select * from Win32_LoadOrderGroup
LogicalDisk Select * from Win32_LogicalDisk
MEMCACHE Select * from WIN32_CACHEMEMORY
MemPhysical Select * from Win32_PhysicalMemoryArray
MemoryChip Select * from Win32_PhysicalMemory
NIC Select * from Win32_NetworkAdapter
NICConfig Select * from Win32_NetworkAdapterConfiguration
NTDOMAIN Select * from Win32_NTDomain
NTEvent Select * from Win32_NTLogEvent
NTEventLog Select * from Win32_NTEventlogFile
NetClient Select * from WIN32_NetworkClient
NetLogin Select * from Win32_NetworkLoginProfile
NetProtocol Select * from Win32_NetworkProtocol
NetUse Select * from Win32_NetworkConnection
OS Select * from Win32_OperatingSystem
OnBoardDevice Select * from Win32_OnBoardDevice
PageFile Select * from Win32_PageFileUsage
PageFileSet Select * from Win32_PageFileSetting
Partition Select * from Win32_DiskPartition
Port Select * from Win32_PortResource
PortConnector Select * from Win32_PortConnector
PrintJob Select * from Win32_PrintJob
Printer Select * from Win32_Printer
PrinterConfig Select * from Win32_PrinterConfiguration
Process Select * from Win32_Process
Product Select * from Win32_Product
QFE Select * from Win32_QuickFixEngineering
QuotaSetting Select * from Win32_QuotaSetting
RDAccount Select * from Win32_TSAccount
RDNIC Select * from Win32_TSNetworkAdapterSetting
RDPermissions Select * from Win32_TSPermissionsSetting
RDToggle Select * from Win32_TerminalServiceSetting
RecoverOS Select * from Win32_OSRecoveryConfiguration
Registry Select * from Win32_Registry
SCSICONTROLLER Select * from Win32_SCSIController
Server Select * from Win32_PerfRawData_PerfNet_Server
Service Select * from Win32_Service
ShadowCopy Select * from Win32_ShadowCopy
ShadowStorage Select * from Win32_ShadowStorage
Share Select * from Win32_Share
SoftwareElement Select * from Win32_SoftwareElement
SoftwareFeature Select * from Win32_SoftwareFeature
SoundDev Select * from WIN32_SoundDevice
Startup Select * from Win32_StartupCommand
SysAccount Select * from Win32_SystemAccount
SysDriver Select * from Win32_SystemDriver
SystemEnclosure Select * from Win32_SystemEnclosure
SystemSlot Select * from Win32_SystemSlot
TapeDrive Select * from Win32_TapeDrive
Temperature Select * from Win32_TemperatureProbe
TimeZone Select * from Win32_TimeZone
UPS Select * from Win32_UninterruptiblePowerSupply
UserAccount Select * from Win32_UserAccount
Voltage Select * from Win32_VoltageProbe
Volume Select * from Win32_Volume
VolumeQuotaSetting Select * from Win32_VolumeQuotaSetting
VolumeUserQuota Select * from Win32_VolumeUserQuota
WMISet Select * from Win32_WMISetting
所以 OS 是 win32_operatingsystem 的別名。% 或 foreach-object 是獲取屬性值的一種方法。
$value = get-wmiobject win32_operatingsystem |
% DataExecutionPrevention_SupportPolicy
前三名的命名空間不同,底部的命名空間消失了。
get-wmiobject -n Root\CIMV2\TerminalServices Win32_TerminalServiceSetting
get-wmiobject -n Root\CIMV2\TerminalServices Win32_TSAccount
get-wmiobject -n Root\CIMV2\TerminalServices Win32_TSPermissionsSetting
get-wmiobject Win32_UninterruptiblePowerSupply # Invalid class
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/517245.html
標籤:电源外壳wmic
