Articles of 脚本

Windows XP以pipe理员身份自动启动进程

我正在寻找一种方式,我可以自动启动某个程序在具有pipe理员权限的用户权限login的用户。 我已经尝试使用任务调度程序,但它没有工作,因为你必须input格式machine \ user的用户名,我们的pxe-image-deployment-system自动修补机器名称,以便input的域\用户停止工作。 更新 : runas.exe命令似乎也不适用于此任务。 如果使用/ user:machinename \ Administrator / savcred,则映像后无效。 用户build议使用的是\ Administrator或localhost \ Administrator,但两者都无法在我的XP SP3机器上运行。 UPDATE2 : 在程序中,我需要执行此function正在使用: [DllImport("user32.dll")] public static extern int ExitWindowsEx(int uFlags, int dwReserved); 当使用Alan Kurasbuild议的程序时,这个function是失败的,这对我来说是不可行的。 UPDATE3 : 是! 我明白了,我想! 在另一个用户上下文中运行时似乎不能使用ExitWindowsEx。 我只是将我的应用程序切换到WTSLogoffSession,现在它正在工作!

使用CLI(或.bat文件)path中的空格检测registry项?

我遇到了一个问题,我的经历(和Google-fu)让我失望了。 基本上,我需要推出KB968730几百客户左右。 当然,想在开始安装之前检查修补程序的安装。 可悲的是,我需要用脚本和GPO来完成,而不是像SCCM这样的系统。 通常不会给我任何问题,但似乎有一个问题。 问题在于此修补程序安装的registry项的path在其中具有血腥空间。 具体而言,它安装到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\KB968730 。 没有意外的是,标准batch file/ CMD命令reg.exe query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\KB968730抛出一个语法错误,弄乱我的batch file的安装检查部分 – 它看到第二作为第二个参数的path的一部分。 所以,当然,我试图用双引号封装path,没有喜悦。 单引号,没有喜悦。 威胁我的操作系统和/或微软也没有产生结果。 经过一些谷歌search和咒骂之​​后,我发现似乎是解决这个问题的办法,但却无法完成,因为某些原因,我无法弄清楚。 (毫无疑问,因为现在我的编码技巧很弱,string标记在最好的时候给我一个循环。) 好像我想用的是这样的: for /f "Tokens=2,*" %%a in ('reg.exe "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\KB968730" /v Path') do (set xpath=%%a)和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给了我之前的空间path,设置为2给了我的空间后的path,我不知道如何将一个值附加到另一个。 特别令人沮丧,因为我见过的所有答案都说:“谢谢,它工作! 或类似的。 *(注意直接在命令行上执行时删除一个% )。 […]

使用定时子文件夹将脚本备份到FTP

我想做一个备份脚本,这使得我定义的文件夹.tar.gz ,说fx /root/tekkit/world 然后,这个.tar.gz文件应该被上传到一个FTP服务器,以上传的时间命名,例如: 07-10-2012-13-00.tar.gz 如何编写这样的备份脚本? 我已经想出了.tar.gz部分 – 只需要命名和上传到FTP。 我知道FTP并不是最安全的方法,但是由于它是非敏感数据,FTP是我唯一的select,所以它会这样做。 编辑: 我结束了这个脚本: #!/bin/bash # have some path predefined for backup unless one is provided as first argument BACKUP_DIR="/root/tekkit/world/" TMP_DIR="/tmp/tekkitbackup/" FINISH_DIR="/tmp/tekkitfinished/" # construct name for our archive TIME=$(date +%d-%m-%Y-%H-%M) if [ $1 ]; then BACKUP_DIR="$1" fi echo "Backing up dir … $BACKUP_DIR" mkdir $TMP_DIR cp -R […]

为脚本日志条目添加时间戳记

目前我有我的bash脚本使用exec 22>&2 21>&1 1>$log 2>&1将stderr和stdout写入日志文件。 我想为每个条目添加一个时间戳,但我还没有find一个简单的方法来做到这一点。 理想情况下,对当前的命令进行简单的更改,而将其余时间写在同一行上。 以下是我使用以下命令的脚本: #!/bin/bash #This script takes the server to rysnc as an argument. You can also tell #the script to check the server_status.txt file. # #Example: /path/to/script/sync.sh grail true # #The arguments are order senstive. The server name must come before the status #check value. #Logfile LOG=/var/log/sync.log DIRECTORYS="auth/ keys/ […]

通过脚本更改快捷方式参数

我们在这里有一个程序,要求每个用户在他们的桌面上有一个指向一个ini文件的快捷方式。 每个文件对用户来说都是唯一的。 最近,我们已经在单独的服务器上安装了新的应用程序。 我希望能够在客户端计算机上运行脚本来查看当前的快捷方式,更改服务器名称,然后将其保存到相同的位置。 我认为,PowerShell将是必要的。 一些事情的影响: $oldargs = # Pull out the args from the current shortcut using voodoo magic $args = $oldargs -replace "server1", "server2" $WshShell = New-Object -comObject WScript.Shell $Shortcut = $WshShell.CreateShortcut("$env:PUBLIC\Desktop\app.lnk") $Shortcut.TargetPath = "%ProgramFiles%\appdir\app.exe" $Shortcut.Arguments = "$args" $Shortcut.WorkingDirectory = "%ProgramFiles%\appdir" $Shortcut.IconLocation = "%ProgramFiles%\appdir\pic.ico" $Shortcut.Save() 真的,我只是失去了如何从当前的快捷方式参数中提取参数。

无法使PSExec与Powershell一起使用

上周我开发了一个脚本来检查指定机器上是否启用了psremoting。 本周,我开始研究一个能够在指定机器上启用psremoting的脚本,但是我无法让psexec在powershell中运行(另外,是的,我知道psremoting可以通过组策略来启用)。 这是我的脚本: $input = Read-Host @" Select Option (1)Manually enter computer(s) (2)Retrieve computer(s) from file Option "@ If ($input -eq 1){ $count = Read-Host "How many computers" $Computers = 1..$count $b=0;$c=1; ForEach ($Computer in $Computers) {$Computers[$b] = Read-Host "Computer" $c; $b++; $c++} } ElseIF ($input-eq 2) { $Computers = Read-Host "File" $Computers = Get-Content […]

需要关于Powershell错误的帮助“赋值运算符的左侧…”

我有一个Powershell脚本,我试图设置,所以它可以每天发送一个Exchange状态电子邮件给我。 当我从EMS控制台窗口手动运行脚本时,脚本工作得很好,但是当我尝试将其添加为计划任务时,我需要添加行Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin在顶部。 这个添加似乎是导致一个问题,因为当我尝试从任务窗口运行脚本,我得到这个错误: Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin param( $MailServer = "mailserver", $MailTo = "[email protected]", $Mailfrom = "[email protected]", $Subject = "Exchange System Status " + (Get-Date)) $body = Get-MailboxDatabase -Status | select Name,LastDifferentialBackup,LastFullBackup | Out-String $body2 = Get-ExchangeServer | where {$_.ServerRole -Match "HubTransport"} | Get-Queue | select Identity,Status,MessageCount,NextHopDomain | Out-String $email = new-object system.net.mail.mailmessage $email.to.add($MailTo) $email.from = […]

IIS 6login一个webfarm

在IIS 6中有编程方式打开/closuresWeb场中的日志logging。 我们有10个服务器,我不想在需要的时候login到每个服务器上,然后翻动日志,然后当我们完成login并closures它。 我知道远程pipe理工具..但想使用PowerShell脚本之类的。

编写机器名称清单,当前用户名,使用WMIC或PowerShell的操作系统

我有我们的Windows Active Directory域中的每台机器的文本文件,我想确定使用WMIC的每台机器的当前login用户(如果有的话)和操作系统: WMIC /NODE:<machine_name> COMPUTERSYSTEM GET USERNAME WMIC /NODE:<machine_name> OS GET caption 有谁知道这是如何脚本从文本文件中读取我的计算机列表,并执行两个WMIC命令为每个,并输出结果的格式: ComputerName, OperatingSystem, CurrentUserName

好shell脚本指南

我有Orielly的“学习狂欢”。 我也参考高级Bash脚本指南(tldp.org/LDP/abs)。 还有关于这个主题的其他好书吗?