Articles of PowerShell

如何导出一定时间段内的所有系统事件日志

我正在使用Powershell v2在Windows Server 2003 SP2上工作,并且正在寻找一种导出所有系统事件日志(例如,从周六2000小时到周日1100小时)的方法。 我可以使用Get-Eventlog命令将所有现有的系统日志导出到CSV文件,然后复制所述时间窗口中的条目。 虽然,我正在寻找一个更简单的方法来使用或不使用PowerShell。

PowerShell使用正则expression式删除文件

我有一个文件夹中有几千个不同版本的文件。 ACZ002-0.p ACZ002-1.p ACZ002-2.p ACZ051-0.p ACZ051-1.p … 修改始终是点之前的最后一个数字。 我只需要保留最新版本的文件,但是我不知道如何继续使用我的代码。 $path = "E:\Export\" $filter = [regex] "[AZ]{3}[0-9]{3}\-[0-9]{1,2}\.(p)" $files = Get-ChildItem -Path $path -Recurse | Where-Object {($_.Name -match $filter)}

使用非pipe理代理的SQL代理Powershell作业失败

我正在尝试创build一个SQL代理作业,它将运行保存在我的系统上的PowerShell脚本。 但是,作业失败,出现以下错误: 作业步骤在PowerShell脚本的第1行收到错误。 相应的行是'g:\ PowerShellShare \ Get-LastDBBackups.ps1'。 纠正脚本并重新安排工作。 PowerShell返回的错误信息是:'AuthorizationManager检查失败。 如果我将代理帐户添加到本地pipe理员,它可以工作,所以它似乎是一个权限问题(使本地pipe理员中的帐户不是我的环境的选项)。 每次运行作业时,Windows安全日志都会显示多个具有事件ID 4656的审核失败,它们都来自试图访问对象的代理帐户: Object: Object Server: SC Manager Object Type: SERVICE OBJECT 快速sc sdshow scmanager表明, Authenticated Users应该有权访问scmanager: D:(A;;CCLCRPRC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD) 最令人费解的是,如果我RUNAS服务器上的代理帐户,并运行脚本,它运行得很好。 我尝试通过SQL代理作业运行哪个脚本并不重要,试图执行任何脚本导致相同的行为。 然而,我可以运行其他的PowerShell命令,只是不执行任何脚本。 希望以前有人遇到这个问题,可以指引我正确的方向。 更新:似乎主要的问题是,当我从SQL代理作业执行时,我的代理帐户不是交互式隐式安全组的成员。 看起来,这个组织正在授予代理使用RUNAS进行testing时所需的成功运行任务的权限。 我无法追查这个组允许的所有权限。 我所看到的审计失败是针对WinHttpAutoProxySvc和CryptSvc服务的。 我使用sc sdshow和sc sdset来修改这些特定服务的权限,以便Authenticated Users权限与Interactive Users组的权限匹配。 审计失败现在消失了,但是当我执行这个工作时,我仍然在SQL中得到相同的错误信息。

查找使用NTFS组的位置

我们正在做一些AD清理工作,迁移或删除旧的AD组,并用我们当前滞留在AD中的命名replace它们。 我们遇到的挑战是确保我们已经发现所有与前一组相关的地方都被用于整个networking,专门用于文件和文件夹访问。 例如,假设我们有一个名为“old-group”的AD组,它在3个不同的服务器上为4个不同的文件夹提供NTFS权限。 有没有一个工具或脚本,我可以安装/运行,以确定所有的权限中列出“旧集团”的地方。

如何在WDS部署的特殊传递期间运行PowerShell脚本?

我正在使用安装介质上的默认boot.wim文件设置Windows Server 2012无人参与部署的Windows部署服务 (WDS)。 我有一个PowerShell脚本为我们的网站执行自动定制。 我希望这个脚本能够在specialize版本中运行,所以我不必为了自动login而烦恼,并且能够在configuration期间保存自己的重启。 该脚本似乎不运行,日志只会提供一个无益的错误代码。 这里是我的无人参与文件的相关部分: <settings pass="specialize"> <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <RunSynchronous> <RunSynchronousCommand wcm:action="add"> <Order>1</Order> <Credentials> <Domain>WDSSERVER</Domain> <Password>APASSWORD</Password> <Username>AUSERNAME</Username> </Credentials> <Path>"c:\windows\system32\windowspowershell\v1.0\powershell.exe" -executionpolicy unrestricted -command "\\<REMOTESERVER>\reminst\customize\specialize.ps1"</Path> </RunSynchronousCommand> </RunSynchronous> </component> </settings> 回应kce的请求。 这是脚本本身: write-host "Executing customisation script." write-host "enabling powershell script execution" Set-ExecutionPolicy Unrestricted write-host "Bringing non-system disks online…" Get-Disk […]

Systems Center服务模板包括AD

我试图devise一个SCVMM(2012 SP1)服务模板,其中包含几台机器join一个域,但诀窍是,该域控制器也在模板中。 IE浏览器。 该模板包含一台将成为AD的机器以及将要join的多台机器。 由于在部署期间域不存在,模板将所有机器声明为工作组的一部分。 应用程序configuration文件预安装脚本执行在Add-Computer上的AD和Add-Computer上运行Install-ADDSForest的工作。 有了适当的部署顺序,这工作正常,但我有一个问题,因为下一个预安装脚本现在开始失败: 错误(22725) SCVMM收到计算机名称<machine>.<domain> for vm <…> 。 预期的计算机名称是<machine> 。 build议操作 确保虚拟机已join正确的域或工作组,然后重试该操作。 哎呀。 由于重命名发生在应用程序脚本中,所以SCVMM不知道它,并且正在哭泣。 但是这是一个鸡和鸡蛋的问题… 任何build议如何解决这个问题?

使用Powershell(RSAT)重置AD中的密码(Win Server 2008)

我正在使用一个我在网上find的powershell脚本,试图使用win7 cpu通过RSAT远程更改Windows Server 2008上的密码。 现在,服务器2008和win7是虚拟机,win7 cpu是服务器,可以正确运行PowerShell的Active Directory模块。 我对PowerShell和处理服务器相当陌生(这个项目是我的实习培训),而且在编译这个脚本的时候遇到了一个错误。 import-Module ActiveDirectory Function Set-AdUserPwd { Param( [string]$user, [string]$pwd ) #end param $oUser = [adsi]"LDAP://$user" $ouser.psbase.invoke("SetPassword",$pwd) $ouser.psbase.CommitChanges() } # end function Set-AdUserPwd Set-AdUserPwd -user "cn=test,ou=Users,dc=ifrit,dc=local" -pwd P@ssword1 Exception calling "Invoke" with "2" argument(s): "There is no such object on the server. " At line:10 char:25 + $ouser.psbase.invoke <<<< […]

如果计算机名称包含点,则PowerShell远程处理不起作用

我有一个系统,当计算机名包含点时,我无法使用PowerShell连接到远程计算机(或远程自己)。 例如,这工作: Enter-PSSession HostA -Credential user1 但是这不是: Enter-PSSession 192.168.0.1 -Credential user1 这也不起作用: Enter-PSSession HostA.DomainA -Credential user1 当我尝试通过networking将PS-Session连接到使用其IP地址或完整域名的同一台计算机(或者仅通过将短名称添加到点)时,会发生同样的问题。 唯一的例外是“127.0.0.1” – 在这种情况下远程PS连接工作。 我将TrustedHosts设置为'*' – 这没有任何区别。 我有另一个系统,不会出现这种行为 – 即我可以交换使用IP地址和完全合格的主机名称。 我没有看到这些系统之间的configuration有任何明显的差异。 我收到以下错误: Enter-PSSession : Connecting to remote server 192.168.0.1 failed with the following error message : The client cannot connect to the destination specified in the request. Verify that […]

PowerShell脚本等待打印输出,直到我按下button

我写了一个PS1脚本,它将计算在Citrix场中运行多less个进程(在本例中为MS Project)。 代码是: $variable=(query farm /process | where { $_.Contains("WINPROJ") } | measure ).count echo $variable 如果我从powershell执行PS1,它的工作原理是完美的,但如果我使用powershell.exe文件“C:\ foo \ countProcessProject.ps1”或powershell.exe -c“C:\ foo \ countProcessProject.ps1“脚本将停止,直到我多次按下button,输出variables。 我比较了CMD和PS执行的环境variables,几乎相同。 映入眼帘,

在Exchange 2010中为邮箱提供只读权限

我需要在Exchange 2010中为用户提供读访问权限。无论PowerShell使用多less种不同的差异,我都会在Outlook中出现“无法展开文件夹”错误,并且“您的邮箱似乎不可用…” OWA中的错误。 以下是我试过的命令没有运气 – 任何人都可以看到我的逻辑错误? add-mailboxfolderpermission -identity <user> -user <user2> -accessrights reviewer add-mailboxfolderpermission -identity <user:\inbox> -user <user2> -accessrights reviewer add-mailboxpermission -identity <user> -user <user2> -accessrights ReadPermission add-mailboxpermission -identity <user> -user <user2> -accessrights ReadPermission -inheritancetype SelfandChild 最后 ForEach ($f in (Get-MailboxFolderStatistics <user> | Where {($_.folderpath -notlike "/Conversation Action Settings") -and ($_.folderpath -notlike "/Quick Step Settings") […]