Powershell连接Home驱动器

时间:2016-04-14 23:14:46

标签: powershell

这个脚本很好用

Get-ADUser -filter * | % { Set-ADUser $_ -HomeDrive "H:" -HomeDirectory ('\\Server \home$\' + $_.SamAccountName) }

但是,如果我添加,如果不是变量,它不工作不确定它出错了什么

ForEach( $User in (Get-ADUser -filter *  | Select -ExpandProperty SamAccountName ) ){ if( -not ( HomeDrive "H:" HomeDirectory ('\\server\home$\' + $_.SamAccountName)) | Set-ADUser $_ -HomeDrive "H:" -HomeDirectory('\\HYDAD1\home$\' + $_.SamAccountName))  } 

2 个答案:

答案 0 :(得分:1)

我认为你只需要一点语法帮助,也许还需要一些结构。如上面的评论中所述,namespace Drupal\mymodule\Access; use Drupal\Core\Access\AccessCheckInterface; use Drupal\Core\Access\AccessResult; use Drupal\node\NodeInterface; use Symfony\Component\Routing\Route; /** * Check the access to a node task based on the node type. */ class NodeTypeAccessCheck implements AccessCheckInterface { /** * {@inheritdoc} */ public function applies(Route $route) { return NULL; } /** * A custom access check. * * @param \Drupal\node\NodeInterface $node * Run access checks for this node. */ public function access(Route $route, NodeInterface $node) { if ($route->hasRequirement('_node_types')) { $allowed_node_types = explode(',', $route->getRequirement('_node_types')); if (in_array($node->getType(), $allowed_node_types)) { return AccessResult::allowed(); } } return AccessResult::forbidden(); } } Home是用户对象的属性。为了能够访问它们,您不能事先使用HomeDirectory,因为这只会将用户的别名作为字符串传递给要使用的管道,并且不会包含这些属性。因此,我们首先要删除该位。接下来,您必须通过引用变量Select -Expand samaccountname正确地将它们作为属性引用。这看起来像$user$user.home -ne "H:"。您会注意到我还在其中添加了$user.HomeDirectory -ne ('\\server\home$\' + $user.SamAccountName)。这是not-equals的比较运算符。这会稍微清理一下你的语法,现在让我们看一下结构。

不要使用-eq语句,而是使用If语句过滤掉需要注意的用户。由于我们以这种方式执行此操作,因此您使用Where代替$_,因为我们还没有真正进入$user循环。所以这看起来像:

ForEach

现在,如果将其合并到脚本中,它看起来像这样:

(Get-ADUser -Filter * | Where{$_.Home -ne "H:" -or $_.HomeDirectory -ne ('\\server\home$\' + $_.SamAccountName)})

答案 1 :(得分:0)

好的,我现在可行了

(Get-ADUser -Filter * | Where{$_.Home -ne "H:" -or $_.HomeDirectory -ne ('\\server\home$\' + $_.SamAccountName)}) | % { Set-ADUser $_ -HomeDrive "H:" -HomeDirectory ('\\Server \home$\' + $_.SamAccountName) }