使用bash,执行的最后一件事的退出代码存储在$?shell 变量中:
foo
bar
echo $? # prints exit code of `bar`
baz
echo $? # prints exit code of `baz`
Run Code Online (Sandbox Code Playgroud)
如果我cmd在 Windows 下运行脚本,是否有等效的方法来获取此值?(注意:诉诸于诸如运行 Python 脚本然后调用其自己的库函数之类的方法并不是我在这里所追求的。)
我遇到了一个问题,我的经验(和 Google-fu)让我失望。
基本上,我需要将KB968730推送给几百个左右的客户。当然,希望在开始安装之前检查修补程序的安装。遗憾的是,我需要使用脚本和 GPO 来执行此操作,而不是像 SCCM 这样的适当系统。通常不会给我带来任何问题的东西,但是,似乎有一个问题。
问题是此修补程序安装的注册表项的路径中有一个血腥的空间。具体来说,它安装到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\KB968730.
毫不奇怪,标准的批处理文件/CMD 命令reg.exe query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\KB968730会引发语法错误并弄乱了我的批处理文件的安装检查部分 - 它将路径的第二部分视为第二个参数。所以,当然,我尝试用双引号封装路径,没有乐趣。单引号,没有乐趣。威胁我的操作系统和/或 Microsoft 也没有产生结果。
经过一些谷歌搜索和咒骂之后,我找到了似乎可以解决此问题的方法,但无法完全正常工作,出于某种原因我无法弄清楚。(毫无疑问,因为这些天我的编码技能很弱,而且字符串标记化在最好的时候让我陷入了循环。)
似乎我想使用的是这样的:
for /f "Tokens=2,*" %%a in (‘reg.exe "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\KB968730" /v Path’) do (set xpath=%%a)然后使用%xpath%,但这不起作用。将标记设置为 1 给我空间之前的路径,设置为 2 给我空间之后的路径,我不知道如何将一个值附加到另一个值。特别令人沮丧,因为我看到的所有答案都说“谢谢,它奏效了!!!” 或类似。*(需要注意的是,%直接在命令行上执行时删除一个。)
有谁知道我在这里搞砸了什么?
或者,如果有人仍然使用 VBS 并且知道如何使用它,我很乐意选择该选项。(不过,没有 PowerShell,因为我们的 XP 客户端没有安装它。)
PS,如果这更适合 StackOverflow,我对它的迁移没有任何问题,但我最初的想法是“我们”不喜欢开发人员来到这里并向 [向我们] 询问有关设置他们的开发的琐碎问题机器,所以我想他们可能会对我的问题有同样的感觉。
我有一台带有 1and1 的服务器,他们已经放弃尝试恢复 RDP 访问(根本没有尝试)并告诉我重新映像服务器。由于这是一台生产机器,我想避免这种情况,因为它会涉及缓慢的 FTP 恢复,而且我不确定它是否真的能解决问题。
机器重新启动,失去了与现有凭据的RDP 连接。我按照以下说明设法以管理员身份访问远程服务器上的命令提示符:http ://help.1and1.com/servers-c37684/windows-server-c39510/system-recovery-c76208/resolving-a -failed-connection-to-remote-desktop-a627381.html
现在,我已经终止了防火墙和 ipsec 进程。仍然没有骰子。我可以用 CMD.exe 做什么
1)诊断情况(是windows还是网络问题)
2) 可能补救RDP连接的丢失
服务器详情:
更新:
添加了注册表值以确保启用远程连接:http : //expertpandas.com/blog/index.php/enabledisable-rdp-using-command-prompt-for-windows-2012/
还发现了这一点: 但我不确定如何使用 CMD 设置启动策略... http://www.techrepublic.com/forums/questions/remote-desktop-does-not-connect-after-a-restart /
我需要在我们的一些工作站上运行一个命令来卸载最前沿,并且在格式化命令时遇到了一些麻烦。
这是需要发生的事情(在多个命令中)
xcopy \\serverpath\Installer.exe C:\Windows
Install.exe /u /s
Del C:\Windows\Install.exe
我正在将 psexec 与计算机列表一起使用,但一直遇到错误。这就是我的命令现在的样子。
psexec @ComputerList.txt -u domain\administrator cmd /c (xcopy "\\NetworkPath\Forefront Software\Install.exe" "C:\Windows" && Install.exe /u /s && del C:\Windows\Install.exe)
Run Code Online (Sandbox Code Playgroud)
我认为路径名和引号中的空格把事情搞砸了......
编辑:
尝试使用脚本运行它但没有运气。看起来 scepinstall.exe 只是挂在远程机器上。我也尝试使用可以在C:\Windows\ccmsetup\
谢谢您的帮助
command-line-interface copy windows-command-prompt uninstall pstools
我正在尝试找到一种命令行方式来从本地安全策略获取安全设置。具体来说是安全设置 > 本地策略 > 审核策略。策略和当前安全设置的列表。能够查看策略是否可编辑或者是否从其他来源设置将是一个额外的好处,但不是必需的。
本地安全策略窗口中的相关设置:
我正在尝试在某些 .cmd 文件中获取主机的 FQDN。我们有脱节的 AD 域,所以"@echo %COMPUTERNAME%.%USERDNSDOMAIN%"不起作用。我的意思是它有效,但返回错误的值。
我最终得到的解决方案是
powershell.exe -noninteractive -command[System.Net.Dns]::GetHostByName(($env:computerName)).HostName
它在命令行中工作正常。我试图将它放入我的 cmd 文件中的一个变量中:
FOR /F "tokens=* USEBACKQ" %%F IN (\`powershell.exe -noninteractive -command
[System.Net.Dns]::GetHostByName(($env:computerName)).HostName\`) DO (
SET var=%%F
)
ECHO %var%
Run Code Online (Sandbox Code Playgroud)
但是此时出现以下错误: ).HostName`) 是意外的。
我知道应该筛选某些内容,因为 cmd 和 powershell 都在解析这一行,但不知道筛选什么以及如何筛选。如何让这个开始工作?
是否可以安装新的唯一 AD LDS 实例(使用 cmd 或 PowerShell)?我可以在网上找到的所有资源都只需使用 Active Directory 轻型目录服务安装向导。
PowerShell 具有用于处理现有LDS 实例的 Active Directory 模块,但我还没有找到可用于创建 AD LDS 新实例的方法。
scripting powershell active-directory windows-command-prompt ad-lds
我想列出并终止属于使用端口的特定进程的会话的所有进程。这应该通过 Windows 批处理命令来实现,该命令接受端口号作为输入。
例如:假设进程 PA 当前正在侦听端口 8081。PA 运行在会话 S1 下。有进程 PB 和 PC 与 PA 属于同一会话。PB和PC将运行在不同的端口上(它们运行在哪个端口上并不重要)
Windows 命令/批处理文件应以 8081 作为输入并终止进程 PA、PB 和 PC。
这可能吗?感谢对此的一些帮助,因为我不太熟悉批处理命令/脚本。
我失败的尝试:
(for /F "tokens=2" %%i in (for /f "tokens=5" %a in ('netstat -aon ^| findstr 8081') do tasklist /NH /FI "PID eq %a") do taskkill /NH /FI "SESSIONNAME eq %%i")
Run Code Online (Sandbox Code Playgroud) 我有一个 .bat 脚本,它安装了 3 个软件。当我打开提升的命令提示符时,浏览到该文件并运行它,一切正常。当我直接运行 .cmd 时(使用 Windows 7 中的“以管理员身份运行”,没有任何反应。任何想法为什么会这样?
脚本如下:
rem 回声关闭
ECHO 正在安装 Bonjour,请稍候!
msiexec.exe /i reqs\Bonjour64.msi /quiet
ECHO 正在安装 DirectX 9.0C Redist ,请稍候
reqs\dxsetup.exe /静默
ECHO 正在安装 Airserver,请稍候。
msiexec.exe /i reqs\AirServer-1.9.1.msi /qn TRANSFORMS=PIDKEY.mst
任何帮助将不胜感激。
在 Windows Server 2008(R2,32位)上,我找到了以下方法来设置租用期限,例如 3600 秒(1 小时)。
netsh dhcp server scope 10.0.0.0 set optionvalue 51 DWORD 3600 [→ 来源]
这基于RFC 2132,其中optionvalue 51代表“IP 地址租用时间”。可以通过 GUI 将租用期限设置为无限制,但我没有找到通过命令行执行此操作的方法。
问题:如何通过cmd设置无限租期?
在一篇适用于 Windows Server 2003(R2、SP1、SP2)的文章中,我发现了以下内容:
... 从
netsh dhcp server mscope>提示符运行set lease TIME... 指定多播[?!] 范围内客户端的租用期限。指定-1会将 IP 地址租用的持续时间设置为无限或无限时间。[ → 来源]
这对我没有多大帮助。
windows ×4
batch ×3
powershell ×3
batch-file ×2
scripting ×2
ad-lds ×1
audit ×1
copy ×1
dhcp-server ×1
pstools ×1
rdp ×1
serial ×1
uninstall ×1
variables ×1
windows-xp ×1