如何检查 PowerShell v2.0 是否安装在服务器列表中?服务器列表是 Windows Server 2003 和 Windows Server 2008 的组合。vbscript 或 PS 脚本会很棒。
我知道 PowerShell 默认安装在 Windows Server 2008 中,但我只是想确保有人没有弄乱服务器。
您能否使用Active Directory PowerShell 模块管理 Windows 2003 功能级别域?
这些模块是在 Server 2008 R2 中引入的,因此它们不能在 Server 2003 上运行,但我已经阅读了有关使用 AD 管理网关服务执行此操作的信息。如果我只有 Windows 2003 域控制器而没有 Windows 2008 R2 域控制器,我不清楚这是否可行。
有没有人确定知道?
windows powershell windows-server-2003 active-directory windows-server-2008-r2
通过 PowerShell,我尝试创建一个新的事件日志并向其中写入一个测试条目,但它没有显示事件查看器。这是我用来创建新事件日志的命令:
new-eventlog -logname TestLog -source TestLog
并向其写入一个新事件:
write-eventlog TestLog -source TestLog -eventid 12345 -message "Test message"
运行第一个命令后,事件查看器中的任何地方都没有“TestLog”日志,我希望它显示在应用程序和服务日志部分。运行第二个命令后,结果相同。不过,我很看到日志在HKLM \ SYSTEM \服务\事件日志\ TESTLOG注册表项。只是在事件查看器中看不到任何内容。
所以,有两个问题:我应该什么时候看到事件日志?在它被创建之后还是在我向它写入第一个事件之后?而且,更重要的是,为什么我根本没有看到它?
我使用的是 Windows Server 2008R2,我以管理员身份登录并运行 PS。
谢谢。
我需要将displayName和CN属性givenName与surNameAD 中的和字段进行协调。
是否有可能采取givenName和surName重命名这两个displayName和CN使用PowerShell?
我不太确定这是否可行,但我需要强制某个安全组的用户让他们的密码过期,以便他们在下次登录时被迫更改密码。这样做的原因是因为我对这个特定组应用了 FGPP(密码策略)以强制执行强密码。好吧,许多用户的密码确实很弱,除非被迫,否则不会更改密码。
有没有办法在不强制每个人输入一个密码的情况下做到这一点?
我有许多虚拟机,它们使用 PowerShell 脚本应用了快照。有时,虚拟机会失去与域的“信任关系”。这会破坏脚本,因为我无法再使用 PowerShell 远程处理进入机器并配置它们。
如何远程重置这些虚拟机的信任关系?也许有可能重新加入不涉及远程处理的域?
手动重新加入域的任何替代解决方案都需要登录计算机并在本地执行此操作。我还没有找到任何可以做到这一点的东西。
到目前为止,我已经尝试将一个脚本放在一起,该脚本以本地管理员身份简单地远程进入框:
$password = ConvertTo-SecureString "password" -AsPlainText -Force
$cred= New-Object System.Management.Automation.PSCredential ("Administrator", $password)
$sesh = new-pssession -computername "theMachine" -credential $cred
Run Code Online (Sandbox Code Playgroud)
在这一点上,我希望使用 PowerShell 来重置密码或类似的东西来重置域信任关系。但是,这会导致最后一行出现错误:Access is Denied。
我认为您不能在 PowerShell 远程处理中使用本地管理员帐户。有没有其他方法可以远程让失去域信任关系的虚拟机重新加入域?
如果我将 DSC 配置嵌套在这样的单个文件中,它可以正常工作:
Configuration Secondary {
Param ($SomeParameter)
Environment Test {
Name = $SomeParameter
Value = "12345"
}
}
Configuration MyConfiguration {
Node localhost {
Secondary TheSecondary {
SomeParameter = "TestEnvVar"
}
}
}
MyConfiguration
Start-DscConfiguration .\MyConfiguration -Wait -Verbose
Run Code Online (Sandbox Code Playgroud)
我想将我的配置分成两个单独的文件。一个将点源另一个以包含配置。
次要.ps1:
Configuration Secondary {
Param ($SomeParameter)
Environment Test {
Name = $SomeParameter
Value = "12345"
}
}
Run Code Online (Sandbox Code Playgroud)
主要.ps1:
. .\Secondary.ps1
Configuration MyConfiguration {
Node localhost {
Secondary TheSecondary {
SomeParameter = "TestEnvVar"
}
}
}
MyConfiguration
Start-DscConfiguration .\MyConfiguration -Wait -Verbose …Run Code Online (Sandbox Code Playgroud) 我知道有GPO设置“计算机配置 => 管理。模板 => 系统 => 脚本 => 同步运行登录脚本”。但是,这可确保登录脚本在 Windows 资源管理器开始加载(启用时)之前运行。
我需要相反的东西。我想确保 explorer.exe 已成功加载并随后执行 PowerShell 登录脚本。这是由于我需要触发的应用程序的一些奇怪的依赖关系。
我尝试禁用根据描述应该允许同时运行文件资源管理器和脚本的设置。不幸的是,它没有(是的,我重新启动和 gpupdates ......)
所以我尝试在我的 PowerShell 登录脚本中添加一个名为 wait-for-explorer() 的函数。它会while循环休眠,直到 explorer.exe 运行。但是,这似乎不起作用。
解决这个问题的最好和最干净的方法是什么?是否有我忽略的 GPO 设置?
这是代码的样子:
Function Wait-For-Explorer
{
$process = 'explorer.exe'
$waitTime = 1
While ($owner.User -ne $env:USERNAME)
{
try
{
$owner = (Get-WmiObject -class win32_process | where { $_.ProcessName -eq $process }).GetOwner() | Select -Property User
}
catch
{
Write-Host "Zzzzz...."
Start-Sleep -Seconds $waitTime
}
}
Write-Host "Process ${process} is …Run Code Online (Sandbox Code Playgroud) 我一直在尝试在 Amazon EC2 上的 Windows Server 2012 实例上测试 PowerShell Desired State 配置。我从 MS 下载中心下载了 Windows Management Framework 4.0:
Windows 管理框架 4.0
http://www.microsoft.com/en-au/download/details.aspx?id=40855
尝试安装时,我遇到了以下错误:
由于错误 2148098050“消息签名者的证书无效或未找到”,无法安装 Windows 更新。(命令行: ""C:\Windows\system32\wusa.exe" "C:\Users\Administrator\Downloads\Windows6.1-KB2819745-x64-MultiPkg.msu" ")
代码签名安装程序通常将证书作为二进制文件的一部分。我只是右键单击该包并从 MSU 手动提取证书并将其安装在本地机器证书存储中以确保签名者是可信的。当我再次尝试安装该软件包时,收到一个新错误:
由于错误 2148073480“指定的算法无效”,无法安装 Windows 更新。(命令行: ""C:\Windows\system32\wusa.exe" "C:\Users\Administrator\Downloads\Windows6.1-KB2819745-x64-MultiPkg.msu" ")
任何人都可以帮助解决上述问题吗?
我有 Windows Server 2012(和 Server 2008,但它是下一个优先级)来使用txwinrm监视它。txwinrm 库内部使用的是 WinRS 协议。我必须使用最低权限的用户来监视它,但不知道如何为他配置访问权限。
我设法做的就是为我的用户配置远程 Powershell 会话,但看起来 winrs 和 powershell 会话具有不同的安全描述符:
Invoke-Command -ComputerName 192.168.173.206 -Credential (credential Administrator $pwd) -ScriptBlock { 2 + 2}
# gives 4
Invoke-Command -ComputerName 192.168.173.206 -Credential (credential lpu1 $pwd) -ScriptBlock { 2 + 2}
# gives 4
winrs -r:192.168.173.206 -u:Administrator -p:$pwd 'powershell -command "2+2"'
# gives 4
winrs -r:192.168.173.206 -u:lpu1 -p:$pwd 'powershell -command "2+2"'
# Gives Winrs error: Access is denied.
Run Code Online (Sandbox Code Playgroud)
我的用户的配置如下:
(Get-Item WSMan:\localhost\Service\RootSDDL).value
# O:NSG:BAD:P(A;;GA;;;BA)(A;;GA;;;S-1-5-21-3231263931-1371906242-1889625497-1141)S:P(AU;FA;GA;;;WD)(AU;SA;GWGX;;;WD)
(Get-PSSessionConfiguration -name Microsoft.Powershell).SecurityDescriptorSddl …Run Code Online (Sandbox Code Playgroud) powershell ×10
windows ×3
dsc ×2
eventcreate ×1
eventviewer ×1
group-policy ×1
remoting ×1
winrm ×1