我正在寻找写一个pipe理脚本,将: 从vSphere中删除一个虚拟机 删除虚拟机的DNS条目 用我们的Windows DHCP服务器释放虚拟机的IP地址 我可以通过vSphere的PowerCLI完成第一个项目,并且可以通过PowerShell“ Cmdlets ”完成最后Cmdlets 。 此外,我可以将这些Cmdlets放在*.ps1文件中,并从shell执行该文件。 最初的研究表明,PowerCLI只是包装/扩展了PowerShell,基本上只是由它自己的以vSphere为中心的Cmdlets 。 所以我想知道:我可以将PowerCLI“代码”( Cmdlets等)放在PS1文件中,以及其他PowerShell代码,并执行它像一个普通的PS1?
假设我在Exchange中有一个目前存在的分发组,并且拥有大约20个成员。 在Powershell 2中,我已经获得了大约七百个需要添加到该组中的人的名单。 我一次能够做到的唯一方法就是一个用户: Add-DistributionGroupMember -Idneity GROUP-NAME -Member Member1 Add-DistributionGroupMember -Idneity GROUP-NAME -Member Member2 …. Add-DistributionGroupMember -Idneity GROUP-NAME -Member MemberN 是否有一个可用的机制,允许我只用一个函数调用来添加所有用户,如下面的伪代码所表示的那样? SOME-CMDLET-TO-ADD-LOTS-AT-ONCE -Identity GROUP-NAME -Member COLLECTION-OF-PEOPLE 我不寻找循环结构。 我正在寻找可以一次添加所有成员的函数或cmdlet,理想情况下只需引用整个列表的一个参数。 我很害怕Powershell会用700多个命令行参数来做什么… (我希望如果这是可能的,我可以传递一个数组或集合的对象被添加。) 有什么build议么? 我没有看到一个叫做“set-distributiongroupmember”的命令,而且在“set-distributiongroup”中也看不到任何有希望的东西。
我需要运行一个包含100个用户名的清单,并清除他们的寻呼机字段,这可以使用Power Shell来完成吗? 包含用户名的文件名的input如下所示:itaig haruth geloos fested
我发现了一个我认为可以适应我的目的的PowerShell脚本 。 它包含格式化输出的这一行: $largeSizefiles = get-ChildItem -path $filesLocation -include $Extension -recurse -ErrorAction "SilentlyContinue" | ? { $_.GetType().Name -eq "FileInfo" } | where-Object {$_.Length -gt $fileSize} | sort-Object -property length | Select-Object Name, @{Name="Size In KB";Expression={ "{0:N0}" -f ($_.Length / 1KB)}},@{Name="LastWriteTime";Expression={$_.LastWriteTime}},@{Name="Path";Expression={$_.directory}} -first $filesLimit 关键部分似乎是这样的: Select-Object Name, @{Name="Size In KB";Expression={ "{0:N0}" -f ($_.Length / 1KB)}},@{Name="LastWriteTime";Expression={$_.LastWriteTime}},@{Name="Path";Expression={$_.directory}} -first $filesLimit […]
我想使用PSEXEC远程执行PowerShell脚本。 PowerShell脚本通过.cmdbatch file调用。 我们这样做的原因是更改执行策略,运行powershell脚本,然后重新执行策略: 在远程服务器上do-tasks.cmd看起来像: powershell -command "&{ set-executionpolicy unrestricted}" powershell DoTasks.ps1 powershell -command "&{ set-executionpolicy restricted}" PowerShell脚本DoTasks.ps1只是现在这样做: Write-Output "Hello World!" 这两个脚本都位于c:\windows\system32 (现在),所以它们在PATH上。 在原始服务器上,我这样做: psexec \\web1928 -u administrator -p "adminpassword" do-tasks.cmd 当这个运行时,我在命令行得到以下响应: c:\Windows\system32>powershell -command "&{ set-executionpolicy unrestricted}" 脚本不再运行。 我不能ctrl-c打破脚本,我只看到^ C字符,我可以键入来自键盘的input,并将字符回显到控制台。 在远程服务器上,我看到PowerShell.exe和CMD.exe正在任务pipe理器的进程选项卡中运行。 如果我结束这些进程,则控制权返回到始发服务器上的命令行。 我已经试过这只是一个简单的.cmdbatch file与@echo hello world ,它工作得很好。 通过RDP会话在远程服务器上运行do-tasks.cmd也可以。 原始服务器正在运行Windows 2003 SP2,远程服务器正在运行Windows 2008 SP2。 为什么我的远程batch file在通过PSEXEC执行时卡住了?
虽然我对PowerShell v3相当陌生,但是我可以用它做一些事情,但是有一点我不明白,就是如何将所有在DNSpipe理器(Server 2008 R2)中列出的主机挂起来。 我不需要设置或删除任何东西,只要把它列入一个文本文件查询列表。 令人惊讶的是我没有find办法做到这一点。 任何人都知道如何做到这一点,请吗?
我已经尝试重新安装SQL Server 2014,并且在尝试import-module sqlps时仍然收到以下错误消息。 存在相同的registry项,但附加了120.我可以使用像Invoke-SqlCmd这样的命令。 不知道这是什么问题。 任何帮助赞赏。 操作系统:Windows 7企业版本6.1 Build 7601:Service Pack 1。 SQL Server:SQL Server 2014开发版。 在x86窗口中: PS H:> import-module sqlps -disablenamechecking Get-ItemProperty : Cannot find path 'HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.SqlServer.Management.PowerShell.sqlps' because it does not exist. At C:\Users\russell_johnson\Documents\WindowsPowerShell\Modules\sqlps\sqlps.psm1:26 char:13 + $item = Get-ItemProperty $sqlpsreg + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (HKLM:\SOFTWARE…owerShell.sqlps:String) [Get-ItemProperty], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetItemPropertyCommand […]
我试图build立一个脚本,将为我们的文件服务器上的新用户创build一个文件夹。 然后从这个文件夹中获得inheritance的权利,并添加特定的权利。我已经成功添加文件夹(如果我给它一个静态条目),给域pipe理员权限,删除inheritance等…但我无法让它使用我设置为用户的variables。 我不希望每次都有一个静态的用户,我希望能够运行这个脚本,要求我input一个用户名,然后出去创build这个文件夹,然后给这个用户完全的权限基于我提供的用户名的文件夹。 我可以使用Smithd作为用户,如下所示: New-Item \\ fileserver \ home $ \ Smithd -Type目录 但不能像这样引用用户: New-Item \\ fileserver \ home $ \ $ username -Type目录 这是我有: 创build一个新的文件夹并设置NTFS权限。 $username = read-host -prompt "Enter User Name" New-Item \\\fileserver\home$\$username –Type Directory Get-Acl \\\fileserver\home$\$username $acl = Get-Acl \\\fileserver\home$\$username $acl.SetAccessRuleProtection($True, $False) $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Administrators","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow") $acl.AddAccessRule($rule) $rule […]
我有一个偷偷摸摸的怀疑,这可能是一个错误,但我肯定愿意考虑我做错事情的可能性。 我在$ vm中有一个VMware虚拟机,我试图给它分配一个启动光盘。 $ vmclosures。 logging的方法似乎非常简单: Set-CDDrive -CD (Get-CDDrive -vm $vm) -IsoPath "[datastorename] \whatever.iso" -StartConnected 1 现在,当我启动VM时,立即尝试PXEboot。 closures机器,然后在vSphere客户机中编辑虚拟机的属性,进入“CD / DVD驱动器1”,然后确认“设备状态”旁边有一个复选标记“开机时连接”。 这是疯狂的事情。 当我取消选中该框时,再次检查,然后启动虚拟机,它从ISO启动。 我一次又一次地做了这个,打开控制台,closures它,每次我都可以在CLI上设置StartConnected标志,GUI反映了设置,但是只有在我手动标记checkbox之后,从ISO引导。 是否有一个步骤,我忽略PowerCLI执行此设置为“采取”?
我正在尝试重命名上周join我们的域的工作站。 从那以后至less重新启动一次。 我的域名基于Windows 2012 R2,所涉及的成员正在运行Windows 10 Pro。 如果这是有用的信息,我有三个区议会(是的,他们是同步的)。 重命名大部分时间工作: $aa = Get-Credential [email protected] Rename-Computer -ComputerName mynewpc -NewName alpc001 -DomainCredential $aa WARNING: The changes will take effect after you restart the computer mynewpc. 但是我有一些固执地拒绝重新命名的机器: Rename-Computer -ComputerName otherhp -NewName alpc005 -DomainCredential $aa Rename-Computer : Fail to rename computer 'otherhp' to 'alpc005' due to the following exception: Cannot […]