如何使用PowerShell重启路由器?
\n我的电脑使用网线连接到路由器,路由器充当调制解调器,它通过 PPPoE 连接到 ISP,我的电脑位于 NAT 之后。
\n我的路由器型号:华为HS8545M,局域网地址:192.168.1.1,网页管理员登录名:CMCCAdmin,网页管理员密码:aDm8H%MdA。
\n我必须执行以下操作才能重新启动路由器(总共点击 7 次,浏览器会记住登录名和密码):
\n\n\n步骤太多了。
\n我尝试过使用这种方法:
\n$ie = New-Object -ComObject \'internetExplorer.Application\'\n$ie.Navigate "https://192.168.1.1"\nRun Code Online (Sandbox Code Playgroud)\n但过了一会儿就失去了联系.Document为空,尝试刷新会导致此错误:
OperationStopped: The RPC server is unavailable. (0x800706BA)\nRun Code Online (Sandbox Code Playgroud)\n我使用的是 Windows 10 20H2,我禁用了远程桌面、远程协助、远程注册表、Windows 远程管理和许多其他功能,我禁用了远程功能,因为它们对安全构成威胁,我认为它们与此相关;顺便一提,RPC服务正在运行。
谁能帮我?
\n第一页源代码: page1.html
\n第二页源代码: page2.html
\n这应该很简单,登录192.168.1.1,创建一个cookie,然后使用cookie进入192.168.1.1/index.asp,提交Restart_button,工作完成,但是我不太熟悉处理网络的命令...
\n我目前正在寻找Python的方式,我使用的是Python 3.9.1 amd64,我很早就把它放在PATH中,我已经通过pip安装了Selenium和Twill。下载GeckoDriver.exe并将其解压到Python安装文件夹中;
\n我知道 selenium、twill、urllib、urllib2、cookielib 和 webbot,都能够做到这一点,我目前正在尝试找出如何以最好的方式做到这一点。
\n我已经成功通过 twill 在 Python 中登录路由器,但是我不知道下一步该做什么:
\nfrom twill.commands import *\ngo(\'http://192.168.1.1\')\nshowforms()\nfv("1","txt_Username","CMCCAdmin")\nfv("1","txt_Password","aDm8H%MdA")\nshowforms()\nsubmit(\'btnSubmit\')\ngo("http://192.168.1.1/index.asp")\n …Run Code Online (Sandbox Code Playgroud) 是否可以从 powershell 配置文件中检测 powershell 是否已被交互调用?我看到有些人使用$host.name但它似乎总是返回ConsoleHost。
正如标题所说:PowerShell 5.1 和 PowerShell 7 有什么区别?
我将以下 PowerShell 脚本保存为 test.ps1:
# test script
Write-Output "z" >> C:\path\to\log.txt
Run Code Online (Sandbox Code Playgroud)
在任务计划中,我将其设置为“无论用户是否登录都运行”。
触发器是“一次”,但我选中了“重复任务间隔: ”并设置为“ 5 分钟”。
在“操作”选项卡中,我有一个操作 - “启动程序”设置为“ powershell.exe ”,“添加参数(可选) ”设置为“ -file c:\path\to\test.ps1 ”和“启动于” (可选) “设置为” c:\path\to ”。
在“历史记录”选项卡中我看到:
任务计划程序在任务“\test”的实例“{a1485114-69fe-4aa8-95ee-27d8f260591a}”中启动了操作“powershell.exe”。
所以看起来它对我有用,但 log.txt 既没有被创建也没有添加到。
有任何想法吗?
powershell scheduled-tasks windows-task-scheduler windows-10
我有一台在企业环境中运行 Windows 的工作计算机,并带有用于 Internet 传出连接的身份验证代理服务器。我不知道它是如何配置的,但是很多工具无法连接,主要是像npm(Atom编辑器中的包),NuGet,PowerShellGet等类型。我什至必须配置我的浏览器(Vivaldi)才能使用直接连接,因为我无法登录某些网站,即使它在 MS Edge 中运行。
HTTP 错误通常是(407) Proxy Authentication Required.
Windows 中的系统范围代理服务器正在由一些定期执行的脚本进行配置,我对此无能为力。
解决方案,或者更确切地说是一种解决方法,是单独配置所有有连接问题的应用程序以绕过代理(使用直接连接到互联网)。我已经设法做到了几乎所有我需要的东西,但到目前为止我在 Powershell Core 上还没有成功。
顺便说一句,我不确定该代理的意义是什么,当你可以简单地绕过它时,它只会使该计算机上的常规工作变得更加困难,并且浪费我的时间和公司的金钱。
到目前为止,我已经了解了以下内容。
PowerShellGetFind-Module失败并出现以下错误:
无法解析包源“https://www.powershellgallery.com/api/v2”
一个简单的 Web 请求失败,并出现错误“缓存访问被拒绝”:
Invoke-WebRequest https://google.com
Run Code Online (Sandbox Code Playgroud)
但当它被迫绕过代理时会成功:
Invoke-WebRequest https://google.com -NoProxy
Run Code Online (Sandbox Code Playgroud)
netsh winhttp show proxy说“直接访问(无代理服务器)。 ”,但以下命令返回实际代理:
([System.Net.WebRequest]::GetSystemWebproxy()).GetProxy("https://google.com")
Run Code Online (Sandbox Code Playgroud)
此外,以下命令返回false:
([System.Net.WebRequest]::GetSystemWebproxy()).IsBypassed("https://google.com")
Run Code Online (Sandbox Code Playgroud)
我做了相当广泛的研究,发现应该可以WebRequest通过将默认代理设置为 null 来配置使用直接连接,但这没有帮助:
[System.Net.WebRequest]::DefaultWebProxy = $null
Run Code Online (Sandbox Code Playgroud)
如果有人有任何其他想法,我将不胜感激。
我发现我实际上可以使用我的域帐户在代理服务器上进行身份验证:
Invoke-WebRequest https://google.com -ProxyUseDefaultCredentials -Proxy http://proxy
Run Code Online (Sandbox Code Playgroud)
因此,这将是代理旁路配置的替代方案。我只是不知道如何为 Powershell 发出的所有请求设置凭据。我不明白为什么 Windows 系统代理没有配置为使用我的帐户进行身份验证。
我尝试配置WebRequest::DefaultWebProxy为使用代理服务器并使用我的域帐户凭据对其进行身份验证,但它不起作用:
Invoke-WebRequest https://google.com
Run Code Online (Sandbox Code Playgroud) 我试图使用 PowerShell 根据设置应用程序获取系统曾经安装的所有更新的列表,最终目标是两者之间进行 1:1 比较。
懒惰的技术博客将为您提供以下其中一项,它会轮询 Win32_QuickFixEngineering WMI 位置:
get-hotfix
wmic qfe list full
get-wmiobject win32_quickfixengineering
Run Code Online (Sandbox Code Playgroud)
但这并不能说明一切。根据微软的说法:
从 Windows Vista 开始,此类仅返回 Microsoft Windows Installer (MSI)、Windows Update、Microsoft Update 或 Windows Server Update Services 提供的更新。它不包括由基于组件的服务 (CBS) 或其他非修补程序或应用程序提供的更新。
为了补充这一点,您经常会看到与 PowerShell 中的“Windows.Update.Session”COM 对象交互的代码块执行类似的操作以获得已安装更新的(不同)列表:
$Session = New-Object -ComObject Microsoft.Update.Session
$Searcher = $Session.CreateUpdateSearcher()
$historyCount = $Searcher.GetTotalHistoryCount()
Run Code Online (Sandbox Code Playgroud)
但即使这样也无法获取完整的历史列表——我想是因为从中提取的列表是对作为累积安装的更新进行重复删除,并省略了为早期版本的 Windows 安装的更新。然而, “设置”
应用程序列出了一年多前在我的设备上安装的内容:
有没有办法使用 PowerShell 访问此列表?设置从哪里获取它?
我正在尝试抓取此网页,因为没有其他方法可以在其内容更改时自动收到警报:
https://airsdk.harman.com/runtime
使用 cURL 可以很好地下载页面(此时可以解析其内容),但使用 Invoke-WebRequest 或 System.Net.WebClient 的 DownloadFile/DownloadString 方法会导致出现错误,表示 Web 服务器返回了 404错误。
检查 Chrome 确认页面始终以 404 响应,但也返回内容,这正是我想要的。
使用 PowerShell 5.1,有没有办法指示 Invoke-WebRequest 忽略虚假的 404 错误,或者有某种方法可以让我无论如何都可以获取响应数据?
我从 Windows 应用商店安装了 Powershell。我想在 VS Code 中使用它作为我的终端,但它找不到 PS。
Powershell 位于哪里?
我有一个名为 D:\MyDir 的文件夹,这是其内容:
PS D:\MyDir> gci
Directory: D:\MyDir
Mode LastWriteTime Length Name
---- ------------- ------ ---- d----- 11/22/2021 8:10 PM MyFolder-2021-11-22
Run Code Online (Sandbox Code Playgroud)
我将按 creatin 排序的文件夹名称存储在 $Dirlist 上:
$Dirlist = gci $LBDestination | ? { $_.PSIsContainer } | sort CreationTime | select -Property Name | foreach { $_.Name }
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是系统将列表中的每个字母存储为数组中的一个值
PS D:\MyDir> $Dirlist[0..3]
M
y
F
o
Run Code Online (Sandbox Code Playgroud)
当我有多个文件夹时,我的脚本工作正常。
当使用以下命令将有关服务的信息返回到文件时:
sc.exe query MyService >> MyFileLocation\MyFile.txt
Run Code Online (Sandbox Code Playgroud)
我在文件中得到以下信息:
SERVICE_NAME: MyService
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
Run Code Online (Sandbox Code Playgroud)
但我只需要国家。我已经检查了文档中的属性:
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/sc-query
但我找不到任何可以让我只返回状态的东西。是否可以这样做?如果可以,该如何做?提前致谢。
powershell ×10
windows-10 ×2
internet ×1
networking ×1
proxy ×1
python ×1
query ×1
router ×1
services ×1
windows ×1