如何在批处理文件中传递变量和参数

如何在批处理文件中传递变量和参数

sh 文件使服务器重新启动,然后我需要将此命令转换为适用于 Windows 的 .batch 和 Powershell,我找不到如何传递用户变量、传递和不检查 Windows 版本中的 SSL 证书的指令。有人可以帮忙吗?谢谢

Linux SH 文件(有效)

#!/bin/sh
ip_address=192.168.0.5
username=myuser
password=mypass
wget --no-check-certificate --user=$username --password=$password -qO- https://$ip_address/reboot

Windows 批处理文件(正在进行中)

@echo off
set ip_address=192.168.0.5
set username=myuser
set password=mypass
start https://%ip_address%/reboot
rem so far it open the requested URL, but it checks the SSL certificate so it blocks the execution, and i don't know how to pass user and password

答案1

电源外壳

类似这样的事就可以了。

$user = "user"
$pass = "password"
$secpass = ConvertTo-SecureString $pass -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential($user, $secpass)

Invoke-WebRequest -Uri "https://$ip_address/reboot" -SkipCertificateCheck -Credential $credential

请注意,-SkipCertificateCheck仅在 PowerShell 6.0 中可用。[1]

蝙蝠

start在批处理文件中启动与其参数相关的处理程序(对于 URL,在您的情况下它将是默认浏览器)

为了实现您的目标,您必须安装适用于 Windows 的 wget(或适用于 Windows 的 curl),并使用与原始 shell 脚本相同的参数。

我认为仅使用标准功能无法在 cmd/bat 文件中完成您想要的操作。但是一些 WMI 技巧可以实现这一目的。

[1]https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-webrequest?view=powershell-6
[2]http://gnuwin32.sourceforge.net/packages/wget.htm
[3]https://curl.haxx.se/windows/

相关内容