原本应该是简单的注册表 DSC 配置已经变成了令人有些沮丧的猜测。我正在尝试设置二进制注册表项。我发现不可能找到正确的值数据格式来正确设置密钥。我正在尝试将此注册表文件转换为 DSC:
\n\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\lanmanserver\\DefaultSecurity]\n"SrvsvcShareAdminConnect"=hex:01,00,04,80,64,00,00,00,70,00,00,00,00,00,00,00,\\\n 14,00,00,00,02,00,50,00,03,00,00,00,00,00,18,00,03,00,0f,00,01,02,00,00,00,\\\n 00,00,05,20,00,00,00,20,02,00,00,00,00,18,00,03,00,0f,00,01,02,00,00,00,00,\\\n 00,05,20,00,00,00,25,02,00,00,00,00,18,00,03,00,0f,00,01,02,00,00,00,00,00,\\\n 05,20,00,00,00,27,02,00,00,01,01,00,00,00,00,00,05,12,00,00,00,01,01,00,00,\\\n 00,00,00,05,12,00,00,00\nRun Code Online (Sandbox Code Playgroud)\n\n我已经对注册表和 xregistry 资源进行了尝试,并遇到了相同的格式错误(我真的不介意我使用哪个)。我尝试将数据提供为单个字符串、字符串数组、附加 0x 以显示它是十六进制的字符串数组等。我也尝试了这里的建议。
\n\n我得到的最接近的是下面的配置,它似乎有效:
\n\n Registry disableAdminShare {\n Ensure = "Present"\n Key = "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\lanmanserver\\DefaultSecurity"\n Force = $true\n ValueName = "SrvsvcShareAdminConnect"\n ValueData = @("010004806400000070000000000000001400000002005000030000000000180003000f00010200000000000520000000200200000000180003000f00010200000000000520000000250200000000180003000f0001020000000000052000000027020000010100000000000512000000010100000000000512000000")\n ValueType = "Binary"\n }\nRun Code Online (Sandbox Code Playgroud)\n\n但查看应用时的日志,它似乎将值转换为十进制,导致无效条目:
\n\n\'HKLM:\\SYSTEM\\CurrentControlSet\\Services\\lanmanserver\\DefaultSecurity\\SrvsvcSha\nreAdminConnect\' to \'(1, 0, 4, 128, 100, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 20,\n0, 0, 0, 2, 0, 80, 0, 3, 0, 0, 0, 0, 0, 24, 0, 3, …Run Code Online (Sandbox Code Playgroud) Powershell 是否有内置方法来安全擦除磁盘?我所说的安全擦除是指将随机数据或全零写入整个磁盘。我所说的磁盘是指整个物理磁盘,而不是单个文件、已安装的卷或文件系统。
我找到了Clear-Disk,但这似乎只是从分区表中擦除卷信息。
我知道有第三方实用程序,微软自己的diskpart clean可以做到这一点,哎呀,人们甚至可以进入Windows 上的 Linux并使用shred 或 dd来让数据小憩一下......
但纯普通的 Powershell能做到吗?(无需诉诸复杂的脚本或外部库调用)
我正在寻找使用 PowerShell 或命令行脚本限制 Windows 事件日志大小的最佳方法。我想在应用程序安装期间运行此脚本,以增加安装程序部署的日志的限制。
到目前为止我尝试过使用 power shell 的 limit event log 命令,Limit-EventLog -LogName "logName" -MaximumSize xxMB但是该命令找不到日志。
接下来,我尝试使用安装程序添加“File”和“MaxSize”注册表项:我创建了一个与下的事件日志名称匹配的键SYSTEM\CurrentControlSet\Services\EventLog、名称为“File”的字符串值、数据、日志文件的完整路径,一个名为“MaxSize”的双字值以及我想要设置最大大小的数据值(以字节为单位)。这似乎有效,但是这使得日志以一种有趣的方式显示在事件查看器中。
我还注意到最大日志大小可以直接从事件查看器更改,并且此更改根本不会反映在注册表中。例如,事件日志“Microsoft-Windows-TaskScheduler/Operational”的大小限制为 10MB,但“SYSTEM\CurrentControlSet\Services\EventLog”下没有相应的注册表项
我正在寻找一个能让我获得相同效果的脚本。
我正在尝试使用 Get-GPO PowerShell 模块。所以我先安装了RSAT,但仍然缺少GroupPolicy模块:
PS C:\Users\admin\Desktop> Install-WindowsFeature RSAT
Success Restart Needed Exit Code Feature Result
------- -------------- --------- --------------
True No NoChangeNeeded {}
PS C:\Users\admin\Desktop> Import-Module grouppolicy
Import-Module : The specified module 'grouppolicy' was not loaded because no valid module file was found in any module
directory.
At line:1 char:1
+ Import-Module grouppolicy
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (grouppolicy:String) [Import-Module], FileNotFoundException
+ FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand
PS C:\Users\admin\Desktop>
Run Code Online (Sandbox Code Playgroud)
如何安装组策略模块?
我试图弄清楚如何在 Windows 10 上的 Powershell 中查看所有已安装软件的版本号。我找到了一个示例,但是当我将生成的列表与“控制面板”>“卸载程序”中的内容进行比较时,它似乎不完整。例如,查询输出中缺少 Google Chrome。知道为什么吗?我对 Powershell 的经验很少,所以也许有一些显而易见的事情?
Get-WMIObject -Query "SELECT * FROM Win32_Product" |FT
如何远程获取在 Win2k8 环境中的机器上应用的 GPO 列表?
我更喜欢 powershell 解决方案,但任何事情都会有所帮助。
有谁知道 Windows 服务器和/或 Windows 7 标准是否/何时将包含 powershell?在我花时间学习它之前,我想知道这将成为 Windows 标准。
我不太确定这在 StackOverflow 上是否会更好,如果您认为它在那里更合适,请随意移动它。
无论如何,问题...
情况
我们目前有大量的 VBScript、DOS 批处理文件和少数 PowerShell 脚本在业务中执行各种任务。
任务范围从确定谁通过 IP 登录到特定机器到相当复杂的文本处理和数据库查询 (SQL Server 2005/2008)
VbScript 确实不是一种很好的语言,尽管它确实有很好的调试支持,PowerShell 好多了,但是(免费)调试支持非常初级,关于批处理文件的说法越少越好
问题
不想开始一场激烈的战争(请客观评论!)我想标准化单一脚本语言,要求是:-
我对你的想法/建议很感兴趣
我正在尝试将 OU“A”的所有用户复制到 OU“B”。我的 PowerShell 拍摄是
$sourceEntry = [ADSI]"LDAP://OU=A,DC=demo,DC=com"
$targetEntry = [ADSI]"LDAP://OU=B,DC=demo,DC=com"
$searcher = New-Object DirectoryServices.DirectorySearcher($sourceEntry)
$searcher.Filter = "(objectClass=user)"
$results = $searcher.FindAll()
foreach($result in $results) {
$user = $result.GetDirectoryEntry()
$user.CopyTo($targetEntry)
}
Run Code Online (Sandbox Code Playgroud)
我的问题是, $user 似乎缺少我尝试调用的 CopyTo 方法。据我了解 PowerShell,$user 是 System.DirectoryServices.DirectoryEntry 类型的 .NET 对象……在 Visual Studio 中我找到了 CopyTo 方法……在 PowerShell 中我没有找到任何方法,只是属性。
我刚开始使用 PowerShell,所以请帮忙!
以编程方式将 Windows 7 机器加入域的首选方法是什么?
我想编写脚本,以便在启动新映像的机器时加入域。(我不想使用 Sysprep 来做这件事,因为我想同时运行一些其他检查。)
据我所知,我可以使用 NetDom,也可以使用 Powershell 中的计算机添加。
不过,这两个理论上都意味着我必须在图像上安装“额外的东西” - 要么 RSAT 使用 netdom(或者我可以手动复制该命令)或用于计算机添加的 AD cmdlet。
任何人都有这些经验,或者哪个是“更好”的方式?我真的不想让最终用户在他们的机器上使用管理工具。
提前致谢,
本
powershell ×10
windows ×4
group-policy ×2
scripting ×2
.net ×1
dsc ×1
hard-drive ×1
ms-dos ×1
rsat ×1
vbscript ×1