所以我正在使用Powershell来获取计划任务的列表。 通过我的研究,我确定获得“最多”任务的唯一方法是使用SCHTASKS。 这个命令确实允许你input一个variables的XML输出: $tasks = [xml](SCHTASKS /QUERY /XML ONE) 现在,问题出现在任务名称被存储为XML注释。 添加到任务对象时,所有这些数据都存储在“#comment”键下。 使用正常的寻址规则,您将访问: $tasks.Tasks.#comment 当然因为数字符号是注释的特殊字符,所以它忽略了它,上面的内容不起作用。 我不能逃避字符“`”,所以我不知道该怎么做。 我宁愿避免通过一个csv文件做所有这些,因为当我这样做的时候,我丢失了大量的数据。 谢谢
试图在我们的环境中的服务器列表上运行病毒扫描。 有数百台机器,所以我们希望一次运行10次扫描(使用我们已有的命令行提示符)。 我们完全是PowerShell的新手,所以任何帮助将非常感激。 我们对我们需要使用哪些命令有一个大致的了解 – 以下是我们现在认为它可能工作的方式: $server = Get-Content "serverlist.txt" $server | % { $VirusScan = { Scan32.exe } Invoke-Command -ScriptBlock { $VirusScan } -computerName $server -ThrottleLimit 10 -Authentication domain/admin } 任何人有什么build议,我们可以如何编排这个?
因此,在用户离开之后,我使用Powershell来存档用户目录。 我们保留存档6个月,然后删除它。 该脚本应该标记存档的文件夹为“DeleteAfter-(从现在起6个月) – (用户名)”。 这一年除外。 也就是说,文件夹标签中包含年份,但如果年份更改,则不会更改。 现在正在创build的存档文件夹(2013年12月)没有标记为“2014”,而是仍然获得“2013”。 以下是我正在使用的date代码片段: #Operator Input Variable. $termeduser = read-host "What is the username?" #Folder name and date variables. $sixmonths = (Get-Date) – (New-TimeSpan -days 180) $sixmonths = Get-Date $sixmonths -format "yyyy-MM-dd" $FolderName = "(server)\TerminatedEmployeeArchives\DeleteAfter-$sixmonths-$termeduser" #Create archive folder New-Item -path $FolderName -type Directory 为了让年份“翻转”到下一个,我需要添加什么? 谢谢!
我试图寻找它,但我没有find任何东西。 有人可以帮我一个脚本的例子,将这样做吗?
我正在编写一个login脚本,在Powershell中安装了大量的打印机,具体取决于当前login到Windows 7的用户。我希望此用户在不再需要时尽快删除已安装的打印机,此用户注销。 我如何规划一个脚本,在Powershell中当前会话结束后立即执行? 谢谢你的时间。 PS:我不能使用AD来安装打印机。
我正在尝试获取VMHost操作系统信息,但找不到所需的脚本。 我厌倦了这一点: Get-VMHost 它返回了很多有关VMHost的信息,但操作系统信息丢失。 任何人都可以build议如何获得操作系统信息?
情况 在我们的组织中,我做了一个GPO来创build一个计划任务。 此任务在login两个用户帐户时触发。 它执行一个powershell脚本来更改networking连接的DNS服务器。 (要阻止这些用户的一些网站,使用dnsmasq。我知道这不是一个防弹解决scheme,但它是足够好的。) 计划任务的操作是这个命令: C:\Windows\System32\WindowsPowerShell\v1.0\Powershell.exe 这些是参数: -ExecutionPolicy Bypass –NoProfile –Command "& {C:\ProgramData\ORGNAME\scripts\SetDNS.ps1}" > C:\ProgramData\ORGNAME\scripts\SetDNS.log 正如你所看到的,输出被发送到一个日志文件。 这是脚本的内容: $wmi = get-wmiobject Win32_NetworkAdapterConfiguration -filter "ipenabled = 'true'" foreach($adapter in $wmi) { if($adapter.description -NotLike "*VMware*") { $adapter.SetDNSServerSearchOrder("XXX.XXX.XXX.XXX") } } invoke-expression -command "c:\windows\system32\ipconfig /flushdns" 问题 问题是,这个工作正常,约10次9。 当它不工作,任务调度程序仍然报告退出码0,但似乎脚本甚至不开始执行,因为什么也没有发生,日志文件没有创build。 一些额外的信息 该任务在SYSTEM帐户下运行 它运行的最高privilleges 当任务按需运行时,它工作正常 所有电脑都运行Windows 7企业版(x64) 有些事我已经尝试过了 我想也许任务调度程序触发脚本太快,有些事情可能还没有初始化,所以我试着设置一个30秒的延迟。 每5分钟重新运行15分钟。 当它失败时重新启动任务,这显然不工作,因为powershell.exe似乎返回错误代码0。
我在ISV的软件开发方面工作。 我们正在考虑在核心应用程序(本身就是ASP.NET)中和周围使用PowerShell。 我的一位同事对我说,大多数认真的客户会认为PowerShell在生产环境中是一个完整的禁忌,并且会拒绝这一点。 他是对的吗?
我已经全面search了这个简单问题的答案。 我经常使用powershell; 绝不是我的专家。 我正在寻找一个PowerShell命令/脚本告诉我哪个域pipe理员最后更改了用户的密码。
我正尝试使用Powershell从Active Directory 2003中导出一些用户信息的列表。 到目前为止,我能够使用这样的东西显示特定的属性列表: if ( (Get-PSSnapin -Name Quest.ActiveRoles.ADManagement -ErrorAction SilentlyContinue) -eq $null ) { Add-PsSnapin Quest.ActiveRoles.ADManagement } get-qaduser -company "Company","Consultant" ` -enabled -DontUseDefaultIncludedProperties -IncludedProperties 'givenName','sn','telephoneNumber','mail','company' ` | sort-object ` | format-table givenname,sn,company,telephonenumber,mail ` 但是,如果我尝试将输出pipe道输出到export-csv,而不是format-table,我得到每个域对象的所有属性。 如果我做了如下的事情: | format-table givenname,sn,company,telephonenumber,mail ` | export-csv -Delimiter `t -NoTypeInformation -Path c:\scripts\adexport.csv 我得到正确数量的行没有数据,除了一些标识符(这是有道理的 – 因为对象没有被传入到export-csv,只是一行文本)。 如何将特定字段导出到文件? 我正在使用Quest的ActiveDirectory powershell CMDLETs( http://www.quest.com/powershell/activeroles-server.aspx […]