因此,我的问题是如何在python中运行PowerShell脚本,使用python中可传递的变量,然后让python运行PowerShell脚本,然后让PowerShell脚本中的特定变量传递给python脚本
我已经知道的是每个代码都是独立工作的。
正如您所看到的,我正在从.ini
文件传入隐藏变量,并试图从那里将compList
传递给Powershell
我不确定我是否正确运行了调用PowerShell并在python脚本中传递参数的命令
preferences = configparser.ConfigParser()
preferences.read('config.ini')
hostName = preferences.get('Directory', 'hostName')
port = preferences.get('Directory', 'port')
serviceName = preferences.get('Directory', 'serviceName')
usr = preferences.get('Credentials', 'userName')
pswrd = preferences.get('Credentials', 'password')
compList = preferences.get('ComputerList', 'compList')
compList = list(compList.split(","))
p = subprocess.Popen(["powershell.exe", r"C:\Users\pecorgx\TestPS1.ps1", 'arg1 @("compList")'], stdout=sys.stdout)
p.communicate()
我的PowerShell脚本:
$ArrComputers = $arg1
Clear-Host
foreach ($Computer in $ArrComputers)
{
$computerSystem = get-wmiobject Win32_ComputerSystem -Computer $Computer
$computerBIOS = get-wmiobject Win32_BIOS -Computer $Computer
$computerOS = get-wmiobject Win32_OperatingSystem -Computer $Computer
$computerCPU = get-wmiobject Win32_Processor -Computer $Computer
$hdds = Get-WmiObject Win32_LogicalDisk -ComputerName $Computer -Filter drivetype=3
write-host "System Information for: " $computerSystem.Name -BackgroundColor DarkCyan
"-------------------------------------------------------"
"Manufacturer: " + $computerSystem.Manufacturer
"Model: " + $computerSystem.Model
"Serial Number: " + $computerBIOS.SerialNumber
"CPU: " + $computerCPU.Name
foreach ($computerhdd in $hdds) { "HDD Drive Letter: " + $computerhdd.DeviceID + "HDD Capacity:" + "{0:N2}" -f ($computerHDD.Size/1GB) + "GB" + " HDD Space: " + "{0:P2}" -f ($computerHDD.FreeSpace/$computerHDD.Size) }
"RAM: " + "{0:N2}" -f ($computerSystem.TotalPhysicalMemory/1GB) + "GB"
"Operating System: " + $computerOS.caption + ", Service Pack: " + $computerOS.ServicePackMajorVersion
"User logged In: " + $computerSystem.UserName
"Last Reboot: " + $computerOS.ConvertToDateTime($computerOS.LastBootUpTime)
""
"-------------------------------------------------------"
}
我认为我传递的是正确的,但我希望Powershell传递回我的python脚本
$computerSystem.TotalPhysicalMemory/1GB
$computerSystem.Manufacturer
$computerSystem.Model
$computerBIOS.SerialNumber
$computerCPU.Name
我希望这个var$computerHDD.Size/1GB
被传递到一个列表中,同时也被传递到我的python脚本中
编辑:我决定只使用.txt
来传递命令。我制作了$myOBJ = "" | Select "computer"
,然后制作了$myOBJ.computer = [string](....)
,其中(...)
是我希望在脚本运行后传递回的内容
想知道一个无需第三方帮助即可使用的解决方案
下面是您的用例的简化示例:
当然,上面只是打印出一个目录列表,但您只需将该命令替换为.ps1脚本路径即可
另外,正如我在评论中提到的,为什么不使用
。。。cmdlet,是否收集此信息并选择所需的属性? 仅为
Get-ComputerInfo
不提供的信息运行其他收集器还有内置的
。。。用于获取存储信息的cmdlet
这样构造输出详细信息怎么样
。。。或者以这种方式组合输出
相关问题 更多 >
编程相关推荐