我想编辑一个已经生产的 .cmd 脚本文件,让脚本删除 Windows 注册表中的某个注册表项。
首先,这是否可能,其次(如果不可能),我可以创建一个 .reg 文件并使用 .cmd 文件执行该文件吗???
从 .cmd 脚本中无法正常工作:
del "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CurrentVersion\SampleKey]"
Run Code Online (Sandbox Code Playgroud)
这种方法对我也不起作用:
cmd "\\networkdrive\regfiles\deleteSampleKey.reg"
Run Code Online (Sandbox Code Playgroud)
然后从 reg 文件中:
Windows Registry Editor Version 5.00
[
-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
]
Run Code Online (Sandbox Code Playgroud)
注意:我使用的是 Windows 2000 x86 操作系统。我不确定这是否会对事情的运作产生任何影响?
我正在管理一个网络,他们在这里使用了一些脚本。主要是批处理脚本或 vbscript。这是一个 Windows 环境,主要是 Server 2008 和一些 2003 服务器。
我的问题是我应该同时学习 VBscript 和 Powershell 还是只学习 Powershell?
我想学习如何自动执行某些任务,甚至通过 cli 进行管理,但我不确定 Powershell 是否可以代替 VBscript 执行大多数管理任务。
我正在编写一个脚本来安装 Bash 程序。我想在出错时退出,所以我添加set -e到脚本的开头。
我必须检查我的脚本中是否存在用户。为此,我正在使用grep ^${USER}: /etc/passwd. 如果用户存在,则脚本正常运行。但是,如果用户不存在,则此命令将退出。如果发生后一种情况,我不想退出。相反,我想创建用户并继续我的安装。
使我的脚本继续运行的解决方案是什么?我试图将 的输出重定向grep到一个变量,但我仍然遇到同样的问题。
我正在从事一个项目,我想为各种项目执行主机文档。这些项目的一部分将来自 Powershell,其余的将来自 NMAP。对于 Powershell 部分,我正在尝试构建一些类似于SYDI-Server 的本土产品项目。它将使用 Powershell 代替 WMI,并允许使用更大、更简单的方法从远程机器获取各种结果。此外,SYDI-Server 项目已经有一段时间没有更新了。NMAP 部分将用于在远程主机上执行一两次扫描并返回结果,以便 Powershell 可以使用或使用这些结果并将它们添加到正在生成的最终报告中。这个想法与报告是从 Powershell 输出的 MS Word 文档类似,该文档包含主机文档所需的所有元素。
说了这么多,有没有办法让数据从 Powershell 共享或来回发送到 NMAP?有没有办法在 Powershell 中使用或解析 NMAP 的结果以进行进一步操作?
我正在测试一个简单的脚本,我想知道为什么从目录执行时它可以正常工作:./test.sh但是当我尝试使用“sh”命令时sh test.sh它不起作用:
test.sh: 3: test.sh: [[: not found
test.sh: 7: test.sh: [[: not found
Run Code Online (Sandbox Code Playgroud)
脚本:
#!/usr/bin/env bash
if [[ $1 = one ]]
then
printf "%b" "two\n" >&2
exit 0
elif [[ $1 = two ]]
then
printf "%b" "one\n" >&2
exit 0
else
printf "%b" "Specify argument: one/two\n"
exit 1
fi
Run Code Online (Sandbox Code Playgroud) 我遇到了一个问题,我的经验(和 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,我对它的迁移没有任何问题,但我最初的想法是“我们”不喜欢开发人员来到这里并向 [向我们] 询问有关设置他们的开发的琐碎问题机器,所以我想他们可能会对我的问题有同样的感觉。
我目前正在使用下面的 Powershell 脚本删除基于创建日期和未修改日期超过 7 天的“$dump_path”的所有文件目录和子目录。
此脚本的问题在于,如果文件夹“A”存在 7(或更多)天,即使其子文件夹和文件的存在时间少于 7 天,它也会被删除。
我希望这个脚本做的是从根目录和“$dump_path”的所有子文件夹中删除所有 7 天或更长时间的文件,但保留少于 7 天的文件和文件夹的父文件夹旧,即使这意味着父文件夹已经超过 7 天。如果所有子文件夹和文件都比父文件夹早 7 天或更早,则可以删除父文件夹。
我知道一个有点晦涩的问题,但目的是在我们共享区域的“沙盒”位置中将所有数据保留 7 天。
此外,如果它可以生成删除内容的日志并在删除后通过电子邮件将其发送出去,那就是一个额外的好处。
# set folder path
$dump_path = "c:\temp"
# set minimum age of files and folders
$max_days = "-7"
# get the current date
$curr_date = Get-Date
# determine how far back we go based on current date
$del_date = $curr_date.AddDays($max_days)
# delete the files and folders
Get-ChildItem $dump_path | Where-Object { $_.CreationTime -lt $del_date } | Remove-Item -Recurse
Run Code Online (Sandbox Code Playgroud) 我想编写一个强制关闭特定文件的脚本,然后将其从一台服务器复制到另一台服务器。
要手动执行此操作,我会使用
管理工具 --> 计算机管理 --> 共享文件夹 --> 打开文件
有没有办法编写这个脚本?
我们有一个 /tmp 文件夹,人们使用它来存放临时文件。它可以是任何东西和任何文件。
我们想让它自动删除(或最好移动到同一共享驱动器上的另一个文件夹)过去两周内未访问的所有文件。这应该按照我不必手动执行的时间表每周发生一次。
有没有软件可以做到这一点?谁能有剧本?
服务器2008R2
作为我为客户处理的任务的一部分,我需要对企业登录脚本进行一些修改。Windows 命令行绝对不是我的专业领域,但我对大多数它都做得很好。但是,我有一个问题,我不知道该怎么做。
基本上,我需要将机器默认网关的 IP 地址获取到环境变量中(供以后在脚本中使用)。我知道它存在于ipconfig和 of的输出中tracert,并且我知道如何在他们的输出中找到我需要的确切行,但我不知道如何超越它。
例如,以下命令会产生如下输出:
>ipconfig|Find "Default Gateway"|Findstr/N "."|Findstr/B "1:"
1: Default Gateway . . . . . . . . . : 199.99.9.1
Run Code Online (Sandbox Code Playgroud)
但是现在我需要以某种方式仅从该文本行中提取 IP 地址,然后将其分配给环境变量。那么,如何从 Windows 命令行执行此操作?(Windows XP 及更高版本)。
scripting windows logon-scripts command-line-interface environment-variables
scripting ×10
powershell ×4
windows ×3
bash ×2
batch-file ×1
files ×1
grep ×1
linux ×1
nmap ×1
shell ×1
vbscript ×1
windows-xp ×1