+2
嗨,我有一个。
我正在上班的路上,然后将其发送给您,这是一个非常好的Python脚本。
复制并粘贴此代码,用Extension .py保存
安装Python 3解释器和模块(ArgParse,GetPass,请求,Urllib3)
设置值 - 滤波器时,您可以将VM的名称打开 /关闭,也可以关闭以特定前缀开头的所有VM。
例子:
代码:
代码:
#!/usr/bin/env Python3
导入argparse
导入GetPass
导入请求
导入urllib3
urllib3.disable_warnings(urllib3.exceptions.insecurreequestwarning)
版本='1.0.1'
超时= 10
def change_power_state(url,用户名,密码,过滤器,power_state):
base_url = url +“/prismgateway/services/rest/v2.0”
尝试:
r = requests.get(base_url + f'/vms/?filter = vm_name%3D%3D。*{filter}。*',
auth =(用户名,密码),
验证= false,
超时=超时)
如果r.status_code == requests.codes.ok:
实体= r.json()['实体']
如果Len(实体)> 0:
vms = [(e ['name'],e ['uuid'],e ['power_state'])在实体中e ['power_state'])
print(f“ \ nselected vms(总计:{len(vms)}):\ n”)
对于VM中的VM:
print(f“ {vm [0]}(uuid:{vm [1]},power_state:{vm [2]})”)
确认=无
虽然确认不在(“是”,“否”,“ y”,“ n”):
确认=输入(f'\ ndo,您要将所有选定VM的功率状态修改为“ {power_state}”(y/n):').Strip()。lower()。下()
如果在['yes','y']中确认:
print(f'\ nmodifying power状态为VMS到“ {power_state}”:\ n')
对于VM中的VM:
body = {“ transition”:f“ {power_state}”}
r = requests.post(base_url + f'/vms/{vm [1]}/set_power_state/',,
json = body,auth =(用户名,密码),
验证= false,
超时=超时)
如果r.status_code == requests.codes.created:
print(f“ {vm [0]}(task_uuid:{r.json()['task_uuid']})”)
别的:
print(“ http错误:” + str(r.status_code))
别的:
打印(“ \ noperation已取消。\ n”)
别的:
print(使用过滤器标准找到f'\ nno vms:“ {filter}”。\ n')
别的:
print(“ http错误:” + str(r.status_code))
除例外为E:
打印(f“错误:{e}”)
如果__name__ ==“ __ -main __”:
parser = argparse.argumentparser(description ='nutanix vms power状态更换器。与REST API V2兼容。')
parser.add_argument(' - v',' - version',action ='version',version ='%(prog)s v' +版本)
parser.add_argument(' - url',必需= true,
help ='nutanix rest api url。必需的。例如:https://10.10.10.100:9440')
parser.add_argument(' - 用户名',必需= true,
help ='nutanix rest api用户名。必需的。')
parser.add_argument(' - 密码',
help ='Nutanix REST API密码。可选,被问到是否省略了。”)
parser.add_argument(' - filter',必需= true,
help ='过滤字符串按名称搜索VM。必需的。')
parser.add_argument(' - power_state',type = str.lower,quilter = true,true,
选择= ['on','off','powercycle','reset','pause','sustend','remume','acpi_shutdown','acpi_reboot'],
help ='目标功率状态以适用于选定的VM。必需的。')
args = parser.parse_args()
passwass = args.passs.ifs.passs.passs.passse else getpass.getPass()
change_power_state(args.url,args.username,password,args.filter,args.power_state)
+2
使用PowerShell CMDLET(从Prism/Central下载),然后启动PowerShell:
##获取您要电源的VM的VM唯一标识符
$ myvmname = read-host“输入VM的名称to Power on”
$ myvm = get-ntnxvm |其中{$_。vmname-eq $ myvmname}
$ myvmid =($ myvm.vmid.split(“:”))[2]
## VM上的电源
set -ntnxvmpowon -vmid $ myvmid
享受
+2
@citrixguy1987早上好。我可以请您确认您是否对我的解决方案感到满意,如果这样,请标记为最佳答案。
非常感谢
安迪
@andymlloyd