我在 Windows XP 上安装了 Python 2.5,并且在某个目录中提供了一组脚本。根据Amanda Birmingham 的这篇文章,我可以为 Python 可执行文件和脚本所在的位置设置一个路径。这意味着我可以这样做:
c:\>python script.py
Run Code Online (Sandbox Code Playgroud)
有没有办法我可以注册 .py 文件,这样我就可以像这样执行它们:
c:\>script.py
Run Code Online (Sandbox Code Playgroud)
在脚本中不包含shebang或env行。
少打字就好。:)
在任何 ssh 登录/连接(任何人通过 ssh 登录)时,有没有办法执行脚本?使用 OpenSSH 服务器。
当然,任何用户都不应该修改该脚本,因此这应该是一个系统范围的脚本。
谢谢!
我不要想“比X天的删除文件。” 如果我想这样做,我只会选择已经为此目的编写的数千个脚本中的一个,而且我不会费心在 ServerFault 上提出这样一个微不足道的问题。
我确实想删除特定文件夹中除最近的 N 个文件之外的所有文件。
背景:远程系统配置为将定期存档文件转储到 Windows 服务器上的共享。这些文件的命名约定为 YYYYMMDD-hhmm.ext。如果存档过程失败,我不希望清除脚本仅仅因为文件比这么多天旧而删除文件。无法将远程系统配置为在归档过程中清除文件。
例如,当脚本运行时,文件夹中可能有 10 个文件,可能有 7 个文件,可能有 5 个文件。我需要始终至少保留最近的 5 个,无论它们有多大。
这可以用 PowerShell 完成吗?
编辑:忽略与命名约定不匹配的文件或文件夹是可取的。不应删除其他文件和文件夹,也不应将它们混淆(导致保留的存档文件少于 5 个)。
我有一个涉及在 Hyper-V 中构建大量虚拟机的场景,我不能使用 SCVMM,必须使用脚本方法来创建这些 VM。我有一个 CSV 文件,其中填写了所有必需的信息,因此我的 Create-VM 代码可以正常工作并且可以毫无问题地创建 VM。
我的问题是,我想在创建过程中为 VM NIC 分配一个静态 MAC 地址。这将帮助我根据我的实验室要求设置 DHCP IP 预留。创建 VM 后,我执行以下命令:
Set-VMNetworkAdapterVlan -VMName $VMName -Access -ComputerName $VMHost -VlanId $VLANID | Get-VMNetworkAdapter | Set-VMNetworkAdapter -StaticMacAddress $Config.intMAC
Run Code Online (Sandbox Code Playgroud)
此时,我已经将一个 NIC 添加到此 VM,理论上它应该将 MAC 地址设置为 $Config.intMAC 持有的任何内容,但它没有,仍然为动态 MAC 地址选择了单选框,并且静态值保持未选择状态,并且全0。
我将如何以编程方式分配 MAC?
我们有一个非常紧张的中断窗口,对于我们的许多系统,必须以正确的顺序重新启动服务器。因此,我想编写我们的更新脚本。
我曾尝试使用Microsoft Script Repository 中的这个Powershell 脚本,但是,对我来说它不能远程工作,并不总是使用 Invoke-Command 工作,它开始安装然后返回而不等待安装完成。我希望在安装完成后重新启动每个系统,这很难在没有安装阻塞或状态信息阻塞的情况下编写脚本。在花了太多时间试图让 CCM_SoftwareUpdate 和 CCM_SoftwareUpdatesManager WMI 类做我需要的事情之后,我想是时候问问其他人可能如何处理类似的情况了。
我的一个朋友说他的公司通过使用Shavlik解决了这个问题,不幸的是,这不是一个选择。
我们使用 SCCM 2012 并混合使用 2003、2008 和 2012 服务器。
scripting configuration-management windows-update sccm sccm-2012
背景:
我有一个域(2003 功能级别),其中包含 Windows XP 和 Windows 7 客户端。我们一直在使用组策略来管理我们的工作站。
现在,我处于一种情况,我需要根据一些复杂的逻辑应用不同的 GPO策略(而不是首选项)。我也许能够创建多个 GPO 并进行安全/WMI 过滤,但它会变得很混乱。脚本对我们来说是一种更简洁的方法(特别是 PowerShell)。
我想做的事:
我想使用启动脚本来启用 GPO 策略。我的登录脚本似乎可以编辑 HKEY_LOCAL_MACHINE\SOFTWARE\Policies 和 HKEY_CURRENT_USER\SOFTWARE\Policies 的内容。这些注册表项都有详细记录,设置它们非常简单。我在网上看到很多人这样做的案例,但我想在我做之前确保这是一个理智的想法。
PC 仍将加入域,并且仍将存在一些 GPO(至少是默认域策略)。因此,有可能与任何现有政策发生冲突。我期待以下情况会发生:
那么,我的理解正确吗?这是一件可以做的事情吗?
scripting powershell group-policy windows-registry startup-scripts
我打算使用 WMIC 来重置远程机器的信任,并且不在网络上。以下所有变化都会导致“拒绝访问”:
以下工作正常:
net use \\patterson-e10 /user:patterson-e10\wks.admin xxx
Run Code Online (Sandbox Code Playgroud)
以下所有失败:
wmic /node:"patterson-e10" /user:"patterson-e10\wks.admin" /password:xxx process call create "cmd /c dir"
wmic /node:"patterson-e10" /user:".\wks.admin" /password:xxx process call create "cmd /c dir"
wmic /node:"patterson-e10" /user:"wks.admin" /password:xxx process call create "cmd /c dir"
wmic /node:"patterson-e10" /user:wks.admin /password:xxx process call create "cmd /c dir"
Run Code Online (Sandbox Code Playgroud)
我即将尝试 Powershell (PS) 远程处理,但我不确定它如何与信任一起工作。
更新
我也尝试过 PSExec 和 SC(我将在其中“启动服务”)并遇到类似的身份验证失败。
似乎部分有效的唯一途径是我启动 RDP 会话,并将驱动器映射到我的源计算机,然后在那里运行命令。我研究了脚本 RDP,除了创建连接文件之外,我似乎无能为力。
更新 2
该机器没有控制台,因此以下将非域成员添加到TrustedHosts 的解决方案不起作用,我只是希望有另一种解决方案/解决方法。
过去几年,我在多台 SQL Express 服务器(2008 至 2012 R2)上设置了Ola Hallengren 的 SQL Server 维护解决方案。我最近开始在所有新的网络备份组件上遇到问题。过去我曾在几台服务器上使用过它,所以我知道它可以工作,但我不知道是什么阻止了它现在工作。作为一个兴趣点,我不是 DBA,对 SQL 几乎一无所知,这就是我来这里的原因。
问题
特别是在一台服务器上,我大约在一年半前制定了维护计划。它使用 UNC 路径(和其他几个命令)每晚备份到另一台本地服务器。该脚本的代码如下:
sqlcmd -E -S SERVER\INSTANCE -d master -Q "EXECUTE dbo.DatabaseBackup @Databases = 'USER_DATABASES', @Directory = '\\techstore1.domain.local\Backups', @BackupType = 'FULL', @Verify = 'Y', @CheckSum = 'Y', @CleanupTime = 14" -b
Run Code Online (Sandbox Code Playgroud)
这在很长一段时间内运行良好,但大约一个月前停止工作。我将它设置为本地备份,然后添加一个字符串将其 xcopy 到远程位置,并在远程服务器上添加一个脚本来清理旧备份。不理想。
我尝试在命令行中以我自己和超级权限帐户的身份运行它。这是我在所有情况下收到的错误:
Msg 50000, Level 16, State 1, Server SERVER\INSTANCE, Procedure DatabaseBackup, Line 384
The directory \\techstore1.domain.local\Backups does not exist.
Msg 50000, Level 16, State 1, Server …Run Code Online (Sandbox Code Playgroud) 刚刚更新了代码......我每次都在“其他”序列上退出。您可以从我的服务器下载 update.sh 文件。它只包含回声“你好更新”
更新代码 (03.11.2015)
#/bin/bash
updateoldmd5=`sed -n l globalupdate.aix`
updatenewmd5=`md5sum update.sh |cut -d ' ' -f 1`
if [ $updateoldmd5 = $updatenewmd5 ]
then
apt-get update
echo -e $(date) "Nothing to update on this System($(hostname))." >> globalupdate.log
wget --no-check-certificate http://aixcrypt.com/vpnprofiles/services/cis/update.sh -O /root/update.sh
echo "Done"
else
chmod +x /root/update.sh
./root/update.sh
echo -e $(date) "System ($(hostname)) Updated." >> globalupdate.log
echo ""
md5sum update.sh |cut -d ' ' -f 1 > globalupdate.aix
echo "Update done"
#Get new update.sh file for next update …Run Code Online (Sandbox Code Playgroud) 上周我开发了一个脚本来检查是否在指定的机器上启用了 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 $Computers
} Else {
write-host "Invalid Option"
Exit
}
cls
$User = Read-Host "Enter username"
$Pass = Read-Host "Enter …Run Code Online (Sandbox Code Playgroud)