Skip to content

Commit

Permalink
Replace WMIC with powershell cmd
Browse files Browse the repository at this point in the history
From Win11-24H2, WMIC is an optional feature for Windows,
And it will be fully removed in the future.So replace the
related cmd

Signed-off-by: Leidong Wang <[email protected]>
  • Loading branch information
leidwang committed Nov 29, 2024
1 parent 1760004 commit ef50d48
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 22 deletions.
2 changes: 1 addition & 1 deletion virttest/utils_disk.py
Original file line number Diff line number Diff line change
Expand Up @@ -835,7 +835,7 @@ def get_disk_size_windows(session, did):
e.g. 0, 1
:return: disk size.
"""
cmd = "wmic diskdrive get size, index"
cmd = 'powershell -command "Get-CimInstance Win32_DiskDrive | Select-Object Size, Index"'
return int(re.findall(r"%s\s+(\d+)" % did, session.cmd_output(cmd))[0])


Expand Down
11 changes: 6 additions & 5 deletions virttest/utils_misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -2351,8 +2351,7 @@ def get_free_disk(session, mount):
:return string: freespace M-bytes
"""
if re.match(r"[a-zA-Z]:", mount):
cmd = "wmic logicaldisk where \"DeviceID='%s'\" " % mount
cmd += "get FreeSpace"
cmd = ('powershell -command "Get-CimInstance Win32_LogicalDisk | Where-Object {$_.DeviceID -eq \'%s\'} | Select-Object FreeSpace"') % mount
output = session.cmd_output(cmd)
free = "%sK" % re.findall(r"\d+", output)[0]
else:
Expand All @@ -2375,7 +2374,8 @@ def get_free_mem(session, os_type):
if os_type != "windows":
free = "%s kB" % get_mem_info(session, "MemFree")
else:
output = session.cmd_output("wmic OS get FreePhysicalMemory")
output = session.cmd_output('powershell -command "Get-CimInstance Win32_OperatingSystem | '
'Select-Object FreePhysicalMemory"')
free = "%sK" % re.findall("\d+", output)[0]
free = float(normalize_data_size(free, order_magnitude="M"))
return int(free)
Expand Down Expand Up @@ -2475,11 +2475,12 @@ def get_win_disk_vol(session, condition="VolumeName='WIN_UTILS'"):
Getting logicaldisk drive letter in windows guest.
:param session: session Object.
:param condition: supported condition via cmd "wmic logicaldisk list".
:param condition: supported condition via powershell cmd "Get-CimInstance Win32_LogicalDisk".
:return: volume ID.
"""
cmd = "wmic logicaldisk where (%s) get DeviceID" % condition
c_name, c_value = condition.split('=')
cmd = ('powershell -command "Get-CimInstance -ClassName Win32_LogicalDisk | Where-Object {$_.%s -eq %s} | Select-Object DeviceID"') % (c_name, c_value)
output = session.cmd(cmd, timeout=120)
device = re.search(r"(\w):", output, re.M)
if not device:
Expand Down
23 changes: 12 additions & 11 deletions virttest/utils_net.py
Original file line number Diff line number Diff line change
Expand Up @@ -1654,10 +1654,10 @@ def set_guest_ip_addr(session, mac, ip_addr, netmask="255.255.255.0", os_type="l
session.cmd(cmd, timeout=360)
elif os_type == "windows":
info_cmd = "ipconfig /all"
cmd = (
"wmic nicconfig where MACAddress='%s' call "
"enablestatic '%s','%s'" % (mac, ip_addr, netmask)
)
get_nic_cmd = 'powershell -command "Get-CimInstance Win32_NetworkAdapterConfiguration -Filter \'MACAddress=\'%s\'\'' % mac
nic = session.cmd_output(get_nic_cmd, timeout=120)
cmd = 'powershell -command "Invoke-CimMethod -InputObject \'%s\' -MethodName EnableStatic -Arguments @{IPAddress = \'%s\'; SubnetMask = \'%s\'}"' % (
nic, ip_addr, netmask)
session.cmd(cmd, timeout=360)
else:
info_cmd = ""
Expand Down Expand Up @@ -3788,7 +3788,7 @@ def str2ipaddr(str_ip):
return None

maps = {}
cmd = "wmic nicconfig where IPEnabled=True get ipaddress, macaddress"
cmd = ('powershell -command "Get-CimInstance Win32_NetworkAdapterConfiguration -Filter \'IPEnabled=True\' | Select-Object IPAddress, MACAddress"')
out = session.cmd_output(cmd)
regex = r".*\w{2}[:-]\w{2}[:-]\w{2}[:-]\w{2}[:-]\w{2}[:-]\w{2}\s*"
lines = [l.strip() for l in out.splitlines() if l.strip()]
Expand Down Expand Up @@ -3944,16 +3944,17 @@ def get_windows_nic_attribute(
session, key, value, target, timeout=240, global_switch="nic"
):
"""
Get the windows nic attribute using wmic. All the support key you can
using wmic to have a check.
Get the windows nic attribute using powershell. All the support key you can
using powershell to have a check.
:param session: session to the virtual machine
:param key: the key supported by wmic
:param key: the key supported by Get-CimInstance
:param value: the value of the key
:param target: which nic attribute you want to get.
"""
cmd = 'wmic %s where %s="%s" get %s' % (global_switch, key, value, target)
cmd = ('powershell -command "Get-CimInstance "Win32_%s" -Filter "%s=%s" | Select-Object -Property %s"'
% (global_switch, key, value, target))
status, out = session.cmd_status_output(cmd, timeout=timeout)
if status != 0:
err_msg = "Execute guest shell command('%s') " "failed with error: '%s'" % (
Expand Down Expand Up @@ -3993,7 +3994,7 @@ def restart_windows_guest_network(session, connection_id, timeout=240, mode="net
:param session: session to virtual machine
:param connection_id: windows nic connectionid,it means connection name,
you Can get connection id string via wmic
you Can get connection id string via wmic or powershell
"""
if mode == "netsh":
disable_windows_guest_network(session, connection_id, timeout=timeout)
Expand All @@ -4011,7 +4012,7 @@ def restart_windows_guest_network_by_key(
using devcon mode must download devcon.exe and put it under c:\
:param session: session to virtual machine
:param key: the key supported by wmic nic
:param key: the key supported by Get-CimInstance nic
:param value: the value of the key
:param timeout: timeout
:param mode: command mode netsh or devcon
Expand Down
2 changes: 1 addition & 1 deletion virttest/utils_netperf.py
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ def __init__(
def is_target_running(self, target):
list_cmd = "ps -C %s" % target
if self.client == "nc":
list_cmd = "wmic process where name='%s' list" % target
list_cmd = 'powershell -command "Get-CimInstance Win32_Process -Filter "Name=%s" | Format-List *"' % target
try:
output = self.session.cmd_output_safe(list_cmd, timeout=120)
check_reg = re.compile(r"%s" % target, re.I | re.M)
Expand Down
5 changes: 2 additions & 3 deletions virttest/utils_test/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -300,10 +300,9 @@ def start_windows_service(session, service, timeout=120):

def get_windows_file_abs_path(session, filename, extension="exe", tmout=240):
"""
return file abs path "drive+path" by "wmic datafile"
return file abs path "drive+path" by Get-CimInstance
"""
cmd_tmp = "wmic datafile where \"Filename='%s' and "
cmd_tmp += "extension='%s'\" get drive^,path"
cmd_tmp = ('powershell -command "Get-CimInstance -Query "SELECT Drive, Path FROM CIM_DataFile WHERE Filename="%s" AND Extension="%s"" | Select-Object Name"')
cmd = cmd_tmp % (filename, extension)
info = session.cmd_output(cmd, timeout=tmout).strip()
drive_path = re.search(r"(\w):\s+(\S+)", info, re.M)
Expand Down
2 changes: 1 addition & 1 deletion virttest/utils_test/qemu/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -488,7 +488,7 @@ def get_guest_total_mem(cls, vm):
:return: physical memory report by guest OS in MB
"""
if vm.params.get("os_type") == "windows":
cmd = "wmic ComputerSystem get TotalPhysicalMemory"
cmd = 'powershell -command "(Get-CimInstance -ClassName Win32_ComputerSystem).TotalPhysicalMemory"'
else:
cmd = "grep 'MemTotal:' /proc/meminfo"
return vm.get_memory_size(cmd)
Expand Down

0 comments on commit ef50d48

Please sign in to comment.