Articles of PowerShell

Windows PowerShell – 如何查看命令历史date/时间

我想在Windows PowerShell列出input的命令及其各自的时间戳。 我如何使用Get-History命令执行此操作? 此外,如果这是不可行的,请告诉我一个方法来检查哪些时间戳已经通过CMD访问哪些urls(network) 。 另外考虑到我已经重新启动了我的电脑。

Windows事件ID 6011

我正在研究如何跟踪计算机何时更名以及由谁来进行。 我知道你可以从一台计算机上取得事件日志,但是我需要在超过1000台计算机上生成一个为期两周的报告: 谁重命名了电脑 当它完成。 或者,如果它是从域名以及由谁和何时取下的。 这可以在服务器端完成,如果是的话如何?

使用所需的状态configuration(DSC)安装Web部署静默失败

DSC绝对是全新的,所以我现在真的很磕磕绊绊。 我有一个基本的configuration,确保安装IIS,.NET 4.5和MSMQ。 我正在努力configuration一个新的Windows 2012 R2实例来支持我们的应用程序。 目前我们的应用程序是通过使用PowerShell部署在Web Deploy上的(这些工件是用TeamCity中的PSake / MSBuild构build的)。 所以下一步,我正在尝试使用DSC来获取Web Deploy安装在目标服务器上。 这是一个MSI下载,而不是一个“Windowsfunction”,我可以简单地确保安装。 所以我在我的DSC中有一个自定义的Script ,它试图执行Web部署MSI文件的无人参与的安装。 剧本 Script InstallWebDeploy { GetScript = { $false } SetScript = { $cmd = "MSIEXEC /a 'C:\Temp\WebDeploy_amd64_en-US.msi' /passive" # have also tried /qn (Start-Process -FilePath "msiexec.exe" -ArgumentList "/a 'C:\Temp\WebDeploy_amd64_en-US.msi' /passive" -Wait -Passthru).ExitCode } TestScript = { $false } } 结果,生成.mof并使用它,给了我: […]

使用PowerShell只删除留下空子文件夹的文件

C:\ Temp \ ifc里面有大约297个文件夹,其中大约有410万个文件。 使用我在本网站其他地方find的脚本,我写下了以下内容,删除所有大于1小时的“文件”。 $TargetFolder = “C:\Temp\ifc” $NumberRange = "-1" Get-ChildItem $TargetFolder -Recurse | Where {$_.lastwritetime -lt (Get-Date).AddHours($NumberRange)} | Remove-Item 我遇到的问题是,它也删除子文件夹(如果这些文件夹最终没有在其中的文件)。 我可以添加什么,以便它留下文件夹结构? 非常感谢。

如何在PowerShell中启动/停止虚拟机?

我有这个powershell脚本,我打电话来备份我们客户的虚拟机: # Author: Vladimir Eremin # Created Date: 3/24/2015 # http://forums.veeam.com/member31097.html # ################################################################## # User Defined Variables ################################################################## # Names of VMs to backup separated by comma (Mandatory). For instance, $VMNames = “VM1”,”VM2” $VMNames = "ZIMBRA" # Name of vCenter or standalone host VMs to backup reside on (Mandatory) $HostName = "TGDALLAS" # Directory that […]

将敏感凭据放入AWS实例的userdata属性中

我正在注入敏感的凭据到用户数据,不知道这是否安全。 我正在使用userdata属性来运行脚本,该脚本在联机时将该实例连接到域 并通过这样的信誉: $ADUser = 'me' $ADPassword = 'Pass' $ADPassword = $ADPassword | ConvertTo-SecureString -AsPlainText -Force $ADCred = New-Object System.Management.Automation.PSCredential -ArgumentList $ADUser, $ADPassword Add-Computer -Credential $ADCred -DomainName mydom.local -NewName testing Restart-Computer -force 我正在使用New-EC2Instance cmdlet启动它,并以userdata的forms传递此脚本 我的credentails能否在aws日志中显示错误输出? 或者别的地方? 在注入PS命令之前,credentails是安全的,我担心它在AWS中的位置。

Powershelllogin脚本(GPO)不运行赢7

我有一个PowerShell脚本创build一个Outlook签名。 它通过用户分配的GPO应用。 所有用户都在同一个OU中,组策略对象链接到该OU。 GPO: User Configuration (Enabled)hide Policieshide Windows Settingshide Scriptshide Logonhide For this GPO, Script order: Windows PowerShell scripts will run firstName Parameters SignatureUnifiedFull v2.ps1 它在Windows 10设备上完美地工作,但Windows 7设备将无法运行它(即使它在我手动在设备上运行脚本时工作)。 我跑了GPresult / R,政策显示在那里… Windows 7和10如何运行login脚本有区别吗?

PowerShell“if”机制依赖于VM状态

我是PowerShell的新手,正在尝试编写一个依赖于Hyper-V虚拟机状态的脚本。 这是我的(基本)if语句: if((get-vm WMDC2 | out-string) -like '*Running*') { echo "running"} 我觉得有必要有更好的方式来做这件事,但我不知道它是什么。 我不认为这样做是一个坏的方法,但是当我正在努力学习时,我想知道是否有更好的方法,如果这是一个不好的方法,为什么呢? 编辑: 正如在第一个答案中提到的,我唯一的想法是转换为一个string来检查对象的属性,我正在寻找。 我想如果有一种方法来做到这一点,而不将我的输出转换为一个string,这实际上是我在找什么。

如何使用PowerShell添加防火墙规则?

我做了一个非常简单的脚本来启用计算机上的远程桌面连接: # Allow Remote Desktop connections (Get-WmiObject -Class "Win32_TerminalServiceSetting" -Namespace root\cimv2\terminalservices).SetAllowTsConnections(1) # Allow low-secutiry connections (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").SetUserAuthenticationRequired(0) 现在,我想完成它,将远程桌面的规则添加到Windows防火墙。 我怎么能做到这一点? 顺便说一句:使用Windows 7 澄清: 今天我通过“控制面板\系统和安全\系统”上的“远程设置”手动启用远程桌面。 这样做,Windows会自动添加防火墙规则以允许传入的远程桌面连接。 精细。 但是,使用上面的脚本,这最后一步没有完成。 在这个非常configuration的屏幕上,Windows向我显示一条提示消息“您必须为远程桌面启用Windows防火墙例外” 问题恰恰是:我如何自动化这一步? 今天我在我安装的每台电脑上手动执行此操作。

HBA卡状态

是否有可能以某种方式获得使用PowerShell或任何其他API的HBA卡的状态,而不是login到服务器,并运行“powermt显示path”?